我有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.name
class 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篇以上文章的作者的查询。
您可以用相关的QuerySet
数注释Article
,然后进行过滤,例如:
from django.db.models import Count
Author.objects.annotate(
narticle=Count('articles')
).filter(
name__startswith='a',
narticle__gt=6
)
如果名称可以以A
或a
开头,则可以将__startswith
lookup [Django-doc]替换为__startswith
。
如果六篇文章也足够,您可以将__istartswith
lookup [Django-doc]替换为__istartswith
。