以x最高的字母x开头的x的查询

问题描述 投票:1回答:2

我有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篇以上文章的作者的查询。

python django django-models django-rest-framework django-views
2个回答
0
投票

您可以用相关的QuerySet数注释Article,然后进行过滤,例如:

from django.db.models import Count

Author.objects.annotate(
    narticle=Count('articles')
).filter(
    name__startswith='a',
    narticle__gt=6
)

如果名称可以以Aa开头,则可以将__startswith lookup [Django-doc]替换为__startswith

如果六篇文章也足够,您可以将__istartswith lookup [Django-doc]替换为__istartswith


0
投票

您可以做这样的事情

__gt lookup [Django-doc]

它使用正则表达式进行注释,然后使用大于6的应用程序逻辑进行过滤。

© www.soinside.com 2019 - 2024. All rights reserved.