为了账号安全,请及时绑定邮箱和手机立即绑定

查询以具有最高 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 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号