簡體   English   中英

Django Queryset:檢查父模型是否具有子/引用模型

[英]Django Queryset: Check if parent model has a child/referring model

楷模:

class Parent(models.Model)
  name = models.CharField(max_length=20L)

class Child(models.Model)
  parent_id = models.ForeignKey('Parent')
  name = models.CharField(max_length=20L)

如何獲得有孩子的父母名單?

我當前的解決方案是通過迭代Parent-queryset,然后檢查它是否有孩子。 有沒有關於此查詢的干凈解決方案?

多謝你們!

parentList = Child.objects.filter(parent_id__isnull=False).values_list('parent_id', flat=True)

parentList = list(set(parentList))

套用僅一次獲得父項

這對我有用。

parents_id_that_have_childs = Child.objects.filter(parent_id__isnull=False).values_list('parent_id', flat=True)

parents = Parent.objects.filter(id__in=list(set(parents_id_that_have_childs)))

讓我解釋:

在parents_id_that_have_childs中,您將具有顯然具有子對象的父母的唯一標識列表。

然后,您只需過濾具有這些ID的父級。

父母= Parent.objects.filter(id__in = list(set(parents_id_that_have_childs)))

您確實應該看看django-mptt。

但是關於您的問題:

parents_with_child = Parent.objects.exclude(child_set=None)

暫無
暫無

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

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