亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查詢以具有最高 x 的字母 x 開頭的 x

查詢以具有最高 x 的字母 x 開頭的 x

守候你守候我 2022-07-05 18:47:37
我有 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]。


查看完整回答
反對 回復 2022-07-05
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

你可以做這樣的事情


Author.objects.annotate(count_articles=Count('articles')).filter(

    name__regex=r'^a+',

    count_articles__gt=6

)

它使用正則表達式和大于 6 的應用程序邏輯進行注釋然后過濾。


查看完整回答
反對 回復 2022-07-05
  • 2 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號