如何计算加入模型中的用户数?

2024-04-24 17:06:31 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有两个模型:

class User(models.Model):
    nickname = models.CharField(max_length=50)
    email = models.CharField(max_length=50)

class Profile(models.Model):
    user = models.OneToOneField(User, primary_key=True)
    carma = models.BooleanField(default=False)
    birthdate = models.DateField(input_formats=['%Y-%m-%d'])

如何获取用户数量,其中:

1)所有年龄在18岁以下的用户?你知道吗

2)18-25岁之间的所有用户

3)所有25岁以上的用户

据我所知,我需要从出生日期开始计算年龄,例如:

 def age(self):
        import datetime
        return int((datetime.date.today() - self.birthday).days / 365.25  )

并在查询中使用返回的年龄。你知道吗

如何在Django中使用函数内部(针对每个指定的查询)执行这些交叉请求?你知道吗

谢谢你!你知道吗


Tags: 用户模型selfdatetimemodelmodelsemailnickname
1条回答
网友
1楼 · 发布于 2024-04-24 17:06:31
from datetime import date

def add_years(d, years):
    try:
        return d.replace(year = d.year + years)
    except ValueError:
        return d + (date(d.year + years, 1, 1) - date(d.year, 1, 1))

today = datetime.date.today()
ago18 = add_years(today, -18)
ago25 = add_years(today, -25)

# < 18
User.objects.filter(profile__birthdate__gt=ago18)
# 18 <= and < 25
User.objects.filter(profile__birthdate__lte=ago18, profile__birthdate__gt=ago25)
# 25 <=
User.objects.filter(profile__birthdate__lte=ago25)

基于这个answer。你知道吗

相关问题 更多 >