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

我有 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 篇文章的作者的查询将是什么。


守候你守候我
浏览 149回答 2
2回答

缥缈止盈

QuerySet您可以使用相关 s 的数量对s进行注释Article,然后进行过滤,例如:from django.db.models import CountAuthor.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]。

梵蒂冈之花

你可以做这样的事情Author.objects.annotate(count_articles=Count('articles')).filter(    name__regex=r'^a+',    count_articles__gt=6)它使用正则表达式和大于 6 的应用程序逻辑进行注释然后过滤。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python