我有几个模型设置如下:
Group(models.Model):
name = models.TextField(max_length=255)
Thing(models.Model):
location = models.TextField(max_length=255)
group = models.ForeignKey(Group)
这只是一个例子来说明这种关系,所以原谅任何语法错误。
我的问题是,如何找到一个具有特定位置的群组?我应该能够使用以下方式访问与组关联的事物:
Group.thing_set
右?那么有什么方法可以根据thing_set中的项目进行过滤?我正在思考这个问题。
Group.objects.filter(thing_set.location in ["Location A", "Location B"]).all()
希望这会让每个包含位置A和位置B的内容的小组都回到我身边。任何建议或朝正确方向推进都会非常有帮助!
感谢。
答案 0 :(得分:4)
根据documentation,您必须使用模型名称作为查询运算符:
要引用“反向”关系,只需使用模型的小写名称。
<强> models.py:强>
from django.db import models
class Group(models.Model):
name = models.TextField(max_length=255)
class Thing(models.Model):
location = models.TextField(max_length=255)
group = models.ForeignKey(Group)
<强> views.py:强>
from django.views.generic import ListView
class ReverseFK(ListView):
model = Group
def get_queryset(self):
g = Group.objects.create(name="example")
g.save()
Order.objects.create(location="here", group=g)
return Group.objects.filter(thing__location__in=["here","there"])