Size: a a a

Django [ru] #STAY HOME

2021 March 11

DT

Dan Tyan in Django [ru] #STAY HOME
Denis Taranov
В джанге вроде как есть
MyModel.objects.order_by('?') но вроде это плохая практика
почему ? =)
источник

DT

Dan Tyan in Django [ru] #STAY HOME
это сделает такой же запрос как ты привел выше
источник

Д

Дмитрий in Django [ru] #STAY HOME
Denis Taranov
В джанге вроде как есть
MyModel.objects.order_by('?') но вроде это плохая практика
Ну вот  я где ни про читаю везде пишут что это вроде как медленно и не оптимально.
источник

Д

Дмитрий in Django [ru] #STAY HOME
Нашел вот такой вариант
SELECT * FROM appname_model WHERE id = RAND() LIMIT 30
источник

DT

Denis Taranov in Django [ru] #STAY HOME
а что будет если ты промежуточные строчки удалил
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Дмитрий
Ну вот  я где ни про читаю везде пишут что это вроде как медленно и не оптимально.
на небольших данных нормально
на больших

база сначала перемешает все строки а потом выберет 30 первых
источник

ИМ

Иван Масюк in Django [ru] #STAY HOME
Есть вопрос. Нужно сделать логику на темплейте: два варианта - если юзер выбирает первый вариант, то показывается одна форма, если выбирает второй вариант, то выводим другую форму. Как это реализовать можно?
источник

𝕬

𝕬𝖗𝖙𝖊𝖒 in Django [ru] #STAY HOME
Привет.

class ModelA(models.Model):
   def get_difference(self):
            return self.objects.annotate(
                 difference=Count('models_cs’) - Count('model_bs’)
).difference
 

class ModelB(models.Model):
   model_a = models.ForeignKey(to=ModelA, related_name=‘model_bs’)


class ModelC(models.Model):
  model_a = models.ForeignKey(to=ModelA, related_name=‘model_cs’)


Нужно посчитать кол-во ModelB и отнять от кол-ва ModelC.
Вылетает AttributeError: Manager isn't accessible via ModelA instances

Как правильно это реализовать? (+ мне кажется, что мой вариант скорее на костыль похож)
источник

Д

Дмитрий in Django [ru] #STAY HOME
𝕬𝖗𝖙𝖊𝖒
Привет.

class ModelA(models.Model):
   def get_difference(self):
            return self.objects.annotate(
                 difference=Count('models_cs’) - Count('model_bs’)
).difference
 

class ModelB(models.Model):
   model_a = models.ForeignKey(to=ModelA, related_name=‘model_bs’)


class ModelC(models.Model):
  model_a = models.ForeignKey(to=ModelA, related_name=‘model_cs’)


Нужно посчитать кол-во ModelB и отнять от кол-ва ModelC.
Вылетает AttributeError: Manager isn't accessible via ModelA instances

Как правильно это реализовать? (+ мне кажется, что мой вариант скорее на костыль похож)
у тебя скобок вроде как не хватает , Count` ы надо в обернуть, после =
источник

Y

Yaroslav in Django [ru] #STAY HOME
𝕬𝖗𝖙𝖊𝖒
Привет.

class ModelA(models.Model):
   def get_difference(self):
            return self.objects.annotate(
                 difference=Count('models_cs’) - Count('model_bs’)
).difference
 

class ModelB(models.Model):
   model_a = models.ForeignKey(to=ModelA, related_name=‘model_bs’)


class ModelC(models.Model):
  model_a = models.ForeignKey(to=ModelA, related_name=‘model_cs’)


Нужно посчитать кол-во ModelB и отнять от кол-ва ModelC.
Вылетает AttributeError: Manager isn't accessible via ModelA instances

Как правильно это реализовать? (+ мне кажется, что мой вариант скорее на костыль похож)
Количество экземпляров?
источник

𝕬

𝕬𝖗𝖙𝖊𝖒 in Django [ru] #STAY HOME
Дмитрий
у тебя скобок вроде как не хватает , Count` ы надо в обернуть, после =
Не помогает
источник

𝕬

𝕬𝖗𝖙𝖊𝖒 in Django [ru] #STAY HOME
Yaroslav
Количество экземпляров?
Да
источник

Y

Yaroslav in Django [ru] #STAY HOME
Через QuerySet можно?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
𝕬𝖗𝖙𝖊𝖒
Привет.

class ModelA(models.Model):
   def get_difference(self):
            return self.objects.annotate(
                 difference=Count('models_cs’) - Count('model_bs’)
).difference
 

class ModelB(models.Model):
   model_a = models.ForeignKey(to=ModelA, related_name=‘model_bs’)


class ModelC(models.Model):
  model_a = models.ForeignKey(to=ModelA, related_name=‘model_cs’)


Нужно посчитать кол-во ModelB и отнять от кол-ва ModelC.
Вылетает AttributeError: Manager isn't accessible via ModelA instances

Как правильно это реализовать? (+ мне кажется, что мой вариант скорее на костыль похож)
сначала считаеешь количества
потом отнимаешь
источник

DB

Dima Boger in Django [ru] #STAY HOME
𝕬𝖗𝖙𝖊𝖒
Привет.

class ModelA(models.Model):
   def get_difference(self):
            return self.objects.annotate(
                 difference=Count('models_cs’) - Count('model_bs’)
).difference
 

class ModelB(models.Model):
   model_a = models.ForeignKey(to=ModelA, related_name=‘model_bs’)


class ModelC(models.Model):
  model_a = models.ForeignKey(to=ModelA, related_name=‘model_cs’)


Нужно посчитать кол-во ModelB и отнять от кол-ва ModelC.
Вылетает AttributeError: Manager isn't accessible via ModelA instances

Как правильно это реализовать? (+ мне кажется, что мой вариант скорее на костыль похож)
Это из-за того что ты положил это в метод
источник

DB

Dima Boger in Django [ru] #STAY HOME
Ты делаешь model_instance.objects вместо ModelClass.objects
источник

DB

Dima Boger in Django [ru] #STAY HOME
Нужно либо вынести в custom queryset, либо в отдельную функцию, либо в методе брать класс от self
источник

ИМ

Иван Масюк in Django [ru] #STAY HOME
Иван Масюк
Есть вопрос. Нужно сделать логику на темплейте: два варианта - если юзер выбирает первый вариант, то показывается одна форма, если выбирает второй вариант, то выводим другую форму. Как это реализовать можно?
Через жс я так понимаю?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Иван Масюк
Через жс я так понимаю?
тебе надо в шаблон выдать две или три формы
и показывать с помощью js
источник

ИМ

Иван Масюк in Django [ru] #STAY HOME
Dan Tyan
тебе надо в шаблон выдать две или три формы
и показывать с помощью js
никак не соберусь учить жс, печально. спасибо!
источник