gpt4 book ai didi

python - Django 查询集 : All Model1 objects where a Model2 exists with a model1 AND the given user

转载 作者:行者123 更新时间:2023-12-01 04:30:48 24 4
gpt4 key购买 nike

我有两个模型和一个用户,相关如下:

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)
...

给定一个用户,我如何获取此查询集:

所有 Model1 对象,其中 Model2 与 model1 对象和给定的 User 一起存在。

如果我能想象这张 table :

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]

最佳答案

你可以通过模型2:
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)

关于python - Django 查询集 : All Model1 objects where a Model2 exists with a model1 AND the given user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32421214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com