基于引用对象中manytomanyfield的属性获取queryset

2024-10-06 11:17:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下型号:

class ModelOne(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

class ModelTwo(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    is_visible = models.BooleanField(default=False)
    modelones = models.ManyToManyField(ModelOne, blank=True)

在视图中,我希望基于ModelTwo的属性获取ModelOne的查询集。例如,我如何获得一个ModelOne的查询集,其中ModelTwois_visible设置为True引用它们

举个例子:

one_one = ModelOne.objects.create()
one_two = ModelOne.objects.create()

two_one = ModelTwo.objects.create()
two_two = ModelTwo.objects.create(is_visible=True)
two_three = ModelTwo.objects.create()

two_two.modelones.add(one_one)
two_two.save()

two_three.modelones.add(one_two)
two_three.save()

queryset = [????]

queryset将只包含one_one,因为two_two有对one_one的引用,也有is_visible{}


Tags: falsetruedefaultobjectsismodelscreateone
1条回答
网友
1楼 · 发布于 2024-10-06 11:17:58

您可以使用以下选项进行筛选:

ModelOne.filter(modeltwo__is_visible=True)

可以反向过滤关系。它将使用^{} parameter [Django-doc]来在^{} [Django-doc]中使用。如果您没有指定,它将使用^{} parameter [Django-doc],如果您没有指定这两者中的任何一个,它将使用小写中的类名

相关问题 更多 >