Форум сайта python.su
class One(models.Model): ... def img(self): return Two.objects.filter(rel=self) class TwoImg(models.Model): rel = models.ForeignKey(One, on_delete=models.CASCADE)
Офлайн
One.objects.get(pk=1).twoimg_set.exists()
Офлайн
Да, пробовал
One.objects.get(pk=1).twoimg_set.exists()
{% fon n in one %} {{n.img}} {% endfor %}
False True True False ...
Офлайн
{% fon n in one %}
{% if n.img %}
{{ n.img }}
{% endif %}
{% endfor %}
Офлайн
да в шаблоне делал, но если сделать так:
{% fon n in one|slice:":10" %} {% if n.img %} {{ n.img }} {% endif %} {% endfor %}
a0 = One.active_objects.select_related().all().order_by('-since') a1 = a0.values_list('rel', flat=True).distinct() b = a0.filter(pk__in=list(a1))[:10]
Отредактировано info.rss (Дек. 12, 2014 15:31:16)
Офлайн
кто-нибудь
Отредактировано info.rss (Дек. 12, 2014 16:33:15)
Офлайн
{% fon n in one %} {% if n.twoimg_set.exists %} {{ n.img }} {% endif %} {% endfor %}
Офлайн
Это, к сожалению, не решает:
inoks{% fon n in one|slice:":10" %} {% if n.twoimg_set.exists %} {{ n.img }} {% endif %} {% endfor %}
inoks
то вместо 10-ти значений в результате, как хотелось бы, он отнимет не существующие и оставит скажем 5
Отредактировано info.rss (Дек. 13, 2014 07:25:28)
Офлайн
Если нужно отображать по 10 штук именно тех One которые имеют связанные TwoIng, то можно использовать аннотацию\агрегацию:
from django.db.models import Count one_objects = One.objects.filter().annotate(Count('twoimg')).filter(twoimg__count__gt=0)
{% fon n in one_objects|slice:":10" %} {{ n.img }} {% endfor %}
Офлайн
не понимал откуда поле twoimg, оказывается оно его создает что ли
Спасибо огромное!
Офлайн