Size: a a a

Django [ru] #STAY HOME

2021 February 08

N

Nonverbis in Django [ru] #STAY HOME
Стасян Владимирович
print(qs := AttrGroup.objects.filter(related_categories__category_id=cat_id, related_attributes__isnull=False).values_list('name', flat=True))
               print(qs.query)

<QuerySet ['Конструкция инкубатора', 'Конструкция инкубатора', 'Конструкция инкубатора', 'Конструкция инкубатора', 'Прочее', 'Нагрев инкубатора', 'Нагрев инкубатора', 'Нагрев инкубатора']>
SELECT "products_attrgroup"."name" FROM "products_attrgroup" INNER JOIN "products_attributesingroup" ON ("products_attrgroup"."id" = "products_attributesingroup"."group_id") INNER JOIN "products_attrgroupincategory" ON ("products_attrgroup"."id" = "products_attrgroupincategory"."group_id") WHERE ("products_attributesingroup"."id" IS NOT NULL AND "products_attrgroupincategory"."category_id" = 5)
Названия уникальны? вот конструкция инкубатора одна  в базе или их там четыре?
источник

СВ

Стасян Владимирович... in Django [ru] #STAY HOME
в рамках этой категории уникально все
источник

СВ

Стасян Владимирович... in Django [ru] #STAY HOME
Стасян Владимирович
выход нашел но мне не нравится, хоть и работает
так дублей нет, ну и до того как добавил проверку related_attributes__isnull=False тоже дублей не было
источник

N

Nonverbis in Django [ru] #STAY HOME
Стасян Владимирович
так дублей нет, ну и до того как добавил проверку related_attributes__isnull=False тоже дублей не было
'Конструкция инкубатора', 'Конструкция инкубатора', 'Конструкция инкубатора', 'Конструкция инкубатора'

это не дубли? И в вопросе было: "Дополнительный фильтр добавляет дубли. ".

Вообще в чем вопрос-то? Сколько должно быть в ответе и чего? Тут джойн. Выбрала группы атрибутов, где атрибуты в группах. Просто значений больше одного. Почему нет?

Надо схлопнуть - distinct.
источник

СВ

Стасян Владимирович... in Django [ru] #STAY HOME
Nonverbis
'Конструкция инкубатора', 'Конструкция инкубатора', 'Конструкция инкубатора', 'Конструкция инкубатора'

это не дубли? И в вопросе было: "Дополнительный фильтр добавляет дубли. ".

Вообще в чем вопрос-то? Сколько должно быть в ответе и чего? Тут джойн. Выбрала группы атрибутов, где атрибуты в группах. Просто значений больше одного. Почему нет?

Надо схлопнуть - distinct.
пока не решил отфильтровать пустые группы без атрибутов то этих дублей не было.
AttrGroup.objects.filter(related_categories__category_id=cat_id) возвращал уникальные значения а с дополнительным фильром related_attributes__isnull=False значений стало больше.  Непонятно как в кверисет залезли по несколько раз одни и те же записи. В БД  AttrGroup для одного айди категории все уникальны
источник

N

Nonverbis in Django [ru] #STAY HOME
Стасян Владимирович
пока не решил отфильтровать пустые группы без атрибутов то этих дублей не было.
AttrGroup.objects.filter(related_categories__category_id=cat_id) возвращал уникальные значения а с дополнительным фильром related_attributes__isnull=False значений стало больше.  Непонятно как в кверисет залезли по несколько раз одни и те же записи. В БД  AttrGroup для одного айди категории все уникальны
брать и сравнивать. какие проблемы-то? И причина найдется.
источник

СВ

Стасян Владимирович... in Django [ru] #STAY HOME
решил вопрос тем что этот второй фильтр заменил проверкой в генераторе выходного словаря (группы без атрибутов не станут элементами выходного словаря). Решил вопрос средствами только питона.
Загадка с кверисет просто осталась загадкой
источник

N

Nikolay in Django [ru] #STAY HOME
Подскажите пожалуйста, как собрать listview с филдами из разных классов для регистрации в админке, но помимо FK, M2M, O2O.. Нужна только вьюшка с полями нужными, так же как в list_display, но не в рамках одного класса
источник

N

Nonverbis in Django [ru] #STAY HOME
Стасян Владимирович
решил вопрос тем что этот второй фильтр заменил проверкой в генераторе выходного словаря (группы без атрибутов не станут элементами выходного словаря). Решил вопрос средствами только питона.
Загадка с кверисет просто осталась загадкой
мне кажется, не лучший вариант. надо вообще пресечь наличие нулла там. но есил это невозможно, то сделать менеджер специальный. И всегда пользоваться только им. С нуллом шутки плохи так-то: могут быть неприятные сюрпризы при селектах.
источник

СВ

Стасян Владимирович... in Django [ru] #STAY HOME
Nonverbis
брать и сравнивать. какие проблемы-то? И причина найдется.
несколко часов этим занимался. Логики вообще никакой. Все наоборот. Ну или я изначально не понял сути сравнения  related_attributes__isnull=False. Мне надо была убрать из кверсет те групп у которых нет связаных attributes
источник

N

Nonverbis in Django [ru] #STAY HOME
Стасян Владимирович
несколко часов этим занимался. Логики вообще никакой. Все наоборот. Ну или я изначально не понял сути сравнения  related_attributes__isnull=False. Мне надо была убрать из кверсет те групп у которых нет связаных attributes
ну, так все и бывает. но логика там точно есть. надо просто брать и сравнивать. и найдется причина. тут не так много сравнивать придется. но брать и смотреть голые селекты, смотреть, что они достают из базы - гонять именно их. да отдебажится.
источник

СВ

Стасян Владимирович... in Django [ru] #STAY HOME
в скуле вроде увидел что он не отфильтровывает группы у которых related_attributes пустой а вроде айди related_attributes  сравнеивал c None
источник

N

Nonverbis in Django [ru] #STAY HOME
Стасян Владимирович
в скуле вроде увидел что он не отфильтровывает группы у которых related_attributes пустой а вроде айди related_attributes  сравнеивал c None
с нуллами в реляционных базах шутки плохи. нельзя его вообще выпускать из-под контроля. Надо сразу пресекать: в менеджер прописать фильтр.
источник

СВ

Стасян Владимирович... in Django [ru] #STAY HOME
может я вообще выражение неправильно применил.
Один фильтр по айди одной связаной  модели, а второй фильтр отбрасывает те элеменеты для которых  нет ни одного связаного экземпляра другой модели. Вот со вторым и был трабл
источник

СВ

Стасян Владимирович... in Django [ru] #STAY HOME
Может стоило фильтровать по not related_atribure is None
Вместо related_atribure__isnull=False?
Вообще поидее эти выражения идентичны?
источник

А

Алексей in Django [ru] #STAY HOME
Стасян Владимирович
Может стоило фильтровать по not related_atribure is None
Вместо related_atribure__isnull=False?
Вообще поидее эти выражения идентичны?
null != null в базах, поэтому джанга, если надо, и так подставляет эквивалент
источник

N

Nire in Django [ru] #STAY HOME
Алексей
null != null в базах, поэтому джанга, если надо, и так подставляет эквивалент
смотря какая база, оракл вроде пустую строку как нул считает
источник

N

Nire in Django [ru] #STAY HOME
а так where is null достаточно
источник

N

Nire in Django [ru] #STAY HOME
Народ, как сделать slice в django templates?

Ситуация такая - есть список категорий, хочу последние три вывести.
Есть темплейт тег, который передает модель
На странице категории хочу запагинировать по 10 постов каждой категорий вывод
На главной по 3 поста
можно сделать это другими темплейт тегами, но есть ли вариант slice сделать внутри темлпейта?
источник

N

Nire in Django [ru] #STAY HOME
типа model.all() | slice ':3'
источник