我有 2 个模型class Author(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=255) email = models.EmailField()def __str__(self): return self.nameclass Article(models.Model): title = models.CharField(max_length=120) description = models.TextField() body = models.TextField() author = models.ForeignKey('Author', related_name='articles', on_delete=models.CASCADE)def __str__(self): return self.title获取所有名称以“a”开头并撰写超过 6 篇文章的作者的查询将是什么。
2 回答

缥缈止盈
TA贡献2041条经验 获得超4个赞
QuerySet您可以使用相关 s 的数量对s进行注释Article,然后进行过滤,例如:
from django.db.models import Count
Author.objects.annotate(
narticle=Count('articles')
).filter(
name__startswith='a',
narticle__gt=6
)
如果名称可以以Aor开头a,您可以将__startswith查找 [Django-doc]替换为__istartswith查找 [Django-doc]。
如果六篇文章也足够了,您可以将__gt查找 [Django-doc]替换为__gte查找 [Django-doc]。

梵蒂冈之花
TA贡献1900条经验 获得超5个赞
你可以做这样的事情
Author.objects.annotate(count_articles=Count('articles')).filter(
name__regex=r'^a+',
count_articles__gt=6
)
它使用正则表达式和大于 6 的应用程序逻辑进行注释然后过滤。
添加回答
举报
0/150
提交
取消