📅  最后修改于: 2023-12-03 14:52:16.678000             🧑  作者: Mango
在 Django 中,有时我们需要基于子模型的属性来获取父模型对象。这可以通过使用子模型过滤器来实现。下面将介绍如何使用子模型过滤器来获取父模型对象。
我们假设有以下的父模型 Parent
和子模型 Child
:
from django.db import models
class Parent(models.Model):
name = models.CharField(max_length=50)
class Child(models.Model):
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
age = models.IntegerField()
其中,子模型 Child
通过外键关联到了父模型 Parent
。
现在,我们想获取所有子模型 Child
的 age
属性大于等于 18
的父模型 Parent
对象。可以通过如下的查询实现:
parents = Parent.objects.filter(child__age__gte=18).distinct()
其中,child__age__gte
表示子模型 Child
的 age
大于等于 18
,而 distinct()
则是为了避免重复的父模型对象。此查询将返回所有符合条件的父模型 Parent
对象。
child__attribute__operation
,其中 child
表示子模型,attribute
表示属性名,operation
表示操作符;distinct()
函数来去重。