我有两个模型和一个User
,相关如下:
class Model1(models.Model):
name = models.CharField(max_length=50)
...
class Model2(models.Model):
model1 = models.ForeignKey(Model1)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
...
给定User
,如何获取此查询集:
所有Model1
个对象,其中{1}存在与model1对象和给定的Model2
。
如果我能想象这张桌子:
User
我试图为用户获取Model1的查询集,比如user = 1,这将导致Model1对象[1,2,4]
答案 0 :(得分:2)
你可以通过Model2:
Model2.objects.filter(model1 = model1,user = user)\
.values_list(' model1',flat = True)\
。不同()
首先,以用户为用户过滤掉所有Model2,然后创建不同Model1的列表。
list(set([m2.model1 for m2 in Model2.objects.filter(user=user).all()]))
在您的具体示例中:
list(set([m2.model1 for m2 in Model2.objects.filter(user_id=1).all()]))
更新
试试这个:
Model1.objects.filter(model2__user=user)