0

假设我有 2 个模型:

Class Tree(models.Model):
    title = models.CharField(max_length=255)

Class Apple(models.Model):
    tree = models.ForeignKey(Tree, related_name="apples")

如何选择所有具有Apples的Trees我的意思 想从.
Tree

我想我想执行这个查询:

SELECT DISTINCT tree.id, tree.title
FROM apple JOIN tree ON apple.tree = tree.id  

到目前为止,我已经写了 2 个查询并且它们正在工作,但我认为它们不是最好的做法:

Tree.objects.filter(
    apples__tree__in=Apple.objects.all().values_list("tree")
).distinct()
 
Tree.objects.filter(apples__tree__isnull=False).distinct()
4

2 回答 2

1

您可以直接查询“NULL”的关系

Trees.objects.filter(apples__isnull=False).distinct()

PS如果你想要确切的查询,你可以这样写(但你只会得到字典,而不是 Tree 对象):

Apple.objects.order_by().values('tree__id', 'tree__title').distinct()
于 2021-06-19T12:40:25.407 回答
0

您可以使用 django 聚合。

from django.db.models import Count
User.objects.annotate(page_count=Count('page')).filter(page_count__gte=2).count()
于 2021-06-19T12:43:00.140 回答