0
我使用Django MPTT,与模型Foobar的是这样的:Django的MPTT查询集的情况下,与孩子有特定属性的
class Foobar(MPTTModel):
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
如果我要选择所有有子女的Foobars,我可以这样做:
[x for x in Foobar.objects.all() if x.get_children().exists()]
如果我要选择具有特定属性的孩子们都Foobars(如published
),我可以这样做:
[x for x in Foobar.objects.all() if x.get_children().filter(published=True).exists()]
尽管如此,我无法在一个查询中找到解决方法。我需要做的是在一个查询,以便能够使用它的ForeignKey
的limit_choices_to
说法:
class Example(models.Model):
related_foobar = models.ForeignKey(
Foobar,
limit_choices_to=Q(....), # How do I make this work?
)
您是否有通过'Foobar' Meta中的'parent_attr'指定的'parent'字段?如果是这样,那么'related_name'是什么? – schwobaseggl
@schwobaseggl我编辑了我的答案以包含该信息。 – Flimm