首页 > 解决方案 > 我如何查询多个对象,使用多个 id 进行过滤

问题描述

class Timeline(models.Model):
license = models.ForeignKey(License, on_delete=models.CASCADE)
last_renewed = models.DateField()
due_date = models.DateField()


def home(request):
title = "Licences"
agencies = Agency.objects.all()
agent =Agency.objects.get(pk=1)
licenses = License.objects.all()
for license in licenses:
    print(license.id)
    timeline = Timeline.objects.select_related().filter(license_id = license.id).order_by('-id')[:1]

我想显示至少一个与我正在查询的每个许可证相关的时间线

标签: djangoquerying

解决方案


而不是forloop,你可以做这样的事情。对不起我的英语,但at least one意味着我认为一个或多个。但这不会给你任何或更多,因为它可能是没有时间线与许可证相关的情况,所以an empty查询集。

def home(request):
        title = "Licences"
        agencies = Agency.objects.all()
        agent =Agency.objects.get(pk=1)
        licenses = License.objects.all()
        timeline = Timeline.objects.select_related().filter(license__in =licenses).order_by('-id')

推荐阅读