Django ORM特定查询

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

我有2个Django模型:

class TelegramUser(models.Model):
    telegram_id = models.IntegerField()
    telegram_username = models.TextField(max_length=255, default=None, blank=True, null=True)
    first_name = models.TextField(max_length=255, default=None, blank=True, null=True)
    last_name = models.TextField(max_length=255, default=None, blank=True, null=True)
    has_blocked = models.BooleanField(default=False)
class DutyDate(models.Model):
    date = models.DateField(default=None, blank=True, null=True)
    telegram_user = models.ForeignKey(TelegramUser, on_delete=models.SET_NULL, null=True)
    group = models.ForeignKey(UserGroup, on_delete=models.CASCADE, null=True)
    mark = models.FloatField(max_length=255, default=0)
    is_open = models.BooleanField(default=True)

我需要获取分配少于3个DutyDate的所有用户。我可以通过一个查询来做到这一点吗?

python django database django-models django-orm
1个回答
0
投票

。我们首先计算相关DutyDate的数量,然后根据该数量进行过滤:

from django.db.models import Count

TelegramUser.objects.annotate(
    nduty=Count('dutydate')
).filter(
    nduty__lt=3
)
© www.soinside.com 2019 - 2024. All rights reserved.