Django模型具有birth_year,birth_month,birth_day和death_year,death_month,death_day字段。
model.py
class person(models.Model):
birth_year = models.SmallIntegerField()
birth_month = models.SmallIntegerField()
birth_day = models.SmallIntegerField()
death_year = models.SmallIntegerField()
death_month = models.SmallIntegerField()
death_day = models.SmallIntegerField()
我必须计算生活少于1个月的人数。
views.py
return render(request, 'report.html', {'count': count})
如何在view.py中查询
希望django专家帮忙。 :)
答案 0 :(得分:3)
我必须计算生活少于1个月的人数。
使用DateField
:
class Person(models.Model):
birth = models.DateField()
death = models.DateField()
您可以使用F
expressions进行计算,如下所示:
from datetime import timedelta
from django.db.models import F
q = Person.objects.annotate(life_span=F('death') - F('birth'))
.filter(life_span__lte=timedelta(days=29))
.count()
print(f'Number of people {q}')
在这里,我假设生活少于29天的任何人都生活了不到一个月。
“月”的概念因leap年等而异。如果需要这种精度,则可以在上面添加更多过滤器和逻辑。