簡體   English   中英

Django queryset:Model2和給定用戶一起存在Model2的所有Model1對象

[英]Django queryset: All Model1 objects where a Model2 exists with a model1 AND the given user

我有兩個模型和一個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對象和給定User一起存在Model2所有Model1對象。

如果我能想象這張桌子:

Model2 User Model1
1      1    1
2      1    2
3      1    2
4      1    4
5      2    1
6      2    3

我正在嘗試為用戶獲取Model1的查詢集,例如user = 1,這將導致Model1對象[1,2,4]

您可以通過Model2:
Model2.objects.filter(model1 = model1,user = user)\\ .values_list('model1',flat = True)\\ .distinct()

首先,您將以用戶為用戶的所有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()]))

UPDATE

也嘗試一下:

Model1.objects.filter(model2__user=user)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM