1

我试图找到一种简单的方法来返回具有相互分配外键的对象。

例如,我有这样的models.py文件:

class Parent(models.Model):
    name = models.CharField(max_length=100)

class Children(models.Model):
    parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
    name = models.CharField(max_length=10)

我为我的父母创建对象family1, family2, family3. 对于我的孩子,我创建了JohnStefani来自family1.

什么是创建仅返回的查询集的最简单方法family1(仅返回一次,即使它有许多相关对象)。返回family 1是因为仅针对此对象存在 ForeignKey。

4

2 回答 2

1

在查询集的末尾添加一个.distinct()调用 [Django-doc] 。例如,如果你想要所有Parent至少有一个孩子的 s,你可以写:

# Parents that have at least one child

Parent.objects.filter(children__isnull=False).distinct()

或者,如果您想查找Parent名称以 开头的孩子的 s Ste,则可以查询:

# Parents that have at least one child with a name that starts with "Ste"

Parent.objects.filter(children__name__startswith='Ste').distinct()
于 2019-08-14T11:30:44.600 回答
0

最简单的方法如下:

Perent 对象是单个父对象。

Parent.child_set.all()

这给了你父母的所有孩子。

于 2019-08-14T11:51:56.910 回答