我的项目中有以下模型:
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
模型获取满足以下条件的所有情况的列表:
user
= request.user
status
= "ACTIVE"
我怎样才能以简单的方式做到这一点?我可以先查询所有文件,然后遍历它们并将案例添加到列表中。这是解决此问题的最佳方法吗?
在此先感谢您的帮助。
答案 0 :(得分:3)
试试这个:
@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)
答案 1 :(得分:3)
另一种与@anamul 的答案相同的方法
Case.objects.filter(
file__user=request.user.id,
file__status=StatusType.ACTIVE,
)
您没有为 File
中的案例 FK 指定相关名称,因此此处的 file__
可能需要更改为 file_set__
。