Python Django按外键筛选对象
我在过滤对象方面有问题。对象显示在所有列表中,但我已为特定列表设置了外键。有什么解决办法吗 型号.pyPython Django按外键筛选对象,python,django,view,Python,Django,View,我在过滤对象方面有问题。对象显示在所有列表中,但我已为特定列表设置了外键。有什么解决办法吗 型号.py class Lists(models.Model): title = models.CharField(max_length=200) class ListsItem(models.Model): date = models.DateTimeField(default=datetime.now,blank=True) title = models.CharFiel
class Lists(models.Model):
title = models.CharField(max_length=200)
class ListsItem(models.Model):
date = models.DateTimeField(default=datetime.now,blank=True)
title = models.CharField(max_length=200)
main_list=models.ForeignKey(Lists, on_delete=models.SET_NULL, null=True)
lists = Lists.objects.order_by('date')
listitems = ListsItem.objects.filter(main_list__in=lists).order_by('date')
视图.py
class Lists(models.Model):
title = models.CharField(max_length=200)
class ListsItem(models.Model):
date = models.DateTimeField(default=datetime.now,blank=True)
title = models.CharField(max_length=200)
main_list=models.ForeignKey(Lists, on_delete=models.SET_NULL, null=True)
lists = Lists.objects.order_by('date')
listitems = ListsItem.objects.filter(main_list__in=lists).order_by('date')
模板
{% if lists %}
{% for list in lists %}
{{list.title}}
{% if listitems %}
{% for listitem in listitems %}
{{listitem.title_item}}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
您可以在模板中为每个
列表
-对象获取对象,而不是两个单独的列表:
{% for list in lists %}
...
{% for item in list.listsitem_set.all %}
... do something with related items
{% endfor %}
...
此外,为了改进查询,您可以使用预回迁相关的
,例如:
lists=lists.objects.order_by('date')。prefetch_相关('listsitem_set'))
如果您不想单独设置
order\u by
,只需将ordering
添加到modelsMeta
-类中。而不是两个单独的列表,您可以在模板内为每个列表获取对象
{% for list in lists %}
...
{% for item in list.listsitem_set.all %}
... do something with related items
{% endfor %}
...
此外,为了改进查询,您可以使用预回迁相关的
,例如:
lists=lists.objects.order_by('date')。prefetch_相关('listsitem_set'))
如果您不想单独设置order\u by
,只需将ordering
添加到modelsMeta
-类中即可