我有 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
提交
取消