如何通过另一个模型上的外键查询 Django 查询集?

How to query a Django queryset through a foreign key on another model?

我的项目中有以下模型

class Case(models.Model):
    ...

class File(models.Model):
    class StatusType(models.TextChoices):
        ACTIVE = "ACTIVE", _("ACTIVE")
        DELETED = "DELETED", _("DELETED")

    case = models.ForeignKey(Case, on_delete=models.CASCADE, null=True)
    user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
    status = models.CharField(
        max_length=255,
        choices=StatusType.choices,
        default=StatusType.ACTIVE,
    )

基本上,在我的一个观点中,我想通过 File 模型获得满足以下条件的所有情况的列表:

我怎样才能以简单的方式做到这一点?我可以先查询所有文件,然后遍历它们并将案例添加到列表中。这是解决这个问题的最佳方法吗?

在此先感谢您的帮助。

试试这个:

@login_required
def my_view(request):
    active_file = File.objects.filter(status=StatusType.ACTIVE, user=request.user)

    cases = Case.objects.filter(file__in=active_file)

    context = {'case': cases}

    return render(request, 'test.html', context=context)

另一种与@anamul 的回答相同的方法

Case.objects.filter(
    file__user=request.user.id, 
    file__status=StatusType.ACTIVE,
)

您没有指定来自File的案例FK的相关名称,因此此处的file__可能需要更改为file_set__