Size: a a a

Django [ru] #STAY HOME

2021 February 23

AG

Artem Gubatenko in Django [ru] #STAY HOME
James Town
Ребята, нужна помощь. Как вывести post.category.name, если модель category - есть m2m для модели post.
У некоторых записей выбрано по 2 категории. Выводить хотя бы 1 категорию (первую выбранную). Нужно вывести именно в самой записи.
отдельными запросами
источник

JT

James Town in Django [ru] #STAY HOME
InzGIBA
post.category_set.first().name???
Во views.py я прописал так:
categories = category.objects.all()
Но как далее с помощью этого вывести хотя бы первую категорию в самой записе/посте ?
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
можешь кстати, subquery заюзать и получать имя только первого
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
James Town
Ребята, нужна помощь. Как вывести post.category.name, если модель category - есть m2m для модели post.
У некоторых записей выбрано по 2 категории. Выводить хотя бы 1 категорию (первую выбранную). Нужно вывести именно в самой записи.
{% for category in post.categories.all %}
{% if forloop.first %}
{{ category.name }}
{% endif %}
{% endfor %}
источник

I

InzGIBA in Django [ru] #STAY HOME
James Town
Во views.py я прописал так:
categories = category.objects.all()
Но как далее с помощью этого вывести хотя бы первую категорию в самой записе/посте ?
categories.filter(post=post).values(“name”).distinct()
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Nikolay Cherniy
{% for category in post.categories.all %}
{% if forloop.first %}
{{ category.name }}
{% endif %}
{% endfor %}
но это костыль конечно, лучше сделать метод в модели который возвращает нужную категорию и в темплейте обращаться к нему
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Nikolay Cherniy
но это костыль конечно, лучше сделать метод в модели который возвращает нужную категорию и в темплейте обращаться к нему
вот не согласен, что надо именно в методе модели писать такое)
источник

JT

James Town in Django [ru] #STAY HOME
InzGIBA
categories.filter(post=post).values(“name”).distinct()
filter В m2m не работает
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
James Town
filter В m2m не работает
просто не умеешь это "готовить". Все работает
источник

I

InzGIBA in Django [ru] #STAY HOME
Так ты выше просто вызываешь все объекты модели
источник

JT

James Town in Django [ru] #STAY HOME
Artem Gubatenko
просто не умеешь это "готовить". Все работает
потому я обратился сюда
источник

I

InzGIBA in Django [ru] #STAY HOME
И да, работает
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Artem Gubatenko
вот не согласен, что надо именно в методе модели писать такое)
ну не соглашаться это конечно нормально, только перенесение этой логики за пределы модели будет криво в реализации, это тот момент когда придерживаться принципов только себе во вред
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Nikolay Cherniy
ну не соглашаться это конечно нормально, только перенесение этой логики за пределы модели будет криво в реализации, это тот момент когда придерживаться принципов только себе во вред
почему не аннотировать в запросе? - subquery
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Или написать маппер, а в запросе за префетчить категории/или одну. В классе-маппере сделать метод
источник

JT

James Town in Django [ru] #STAY HOME
Вот код views и немного models:

https://dpaste.org/8D4p
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Artem Gubatenko
почему не аннотировать в запросе? - subquery
потому что это кривая реализация простой идеи, которая только ради принципа. хороший программист не только знает солид и паттерны, но и понимает когда нужно от них отступать.
непогрешимые принципы только драй и кисс, и тут как раз нарушается последний
источник

JT

James Town in Django [ru] #STAY HOME
Nikolay Cherniy
потому что это кривая реализация простой идеи, которая только ради принципа. хороший программист не только знает солид и паттерны, но и понимает когда нужно от них отступать.
непогрешимые принципы только драй и кисс, и тут как раз нарушается последний
Я был бы рад, чтобы просто работало. Но если есть "красивое" решение, то еще лучше.
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Nikolay Cherniy
потому что это кривая реализация простой идеи, которая только ради принципа. хороший программист не только знает солид и паттерны, но и понимает когда нужно от них отступать.
непогрешимые принципы только драй и кисс, и тут как раз нарушается последний
> потому что это кривая реализация простой идеи
а что кривого?
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
James Town
Я был бы рад, чтобы просто работало. Но если есть "красивое" решение, то еще лучше.
я написал выше как сделать неправильно в шаблоне и как более правильно в модели, выбирай
источник