【发布时间】:2022-01-26 18:04:28
【问题描述】:
我想减去创建用户结果对象的时间和用户注册的时间。 这些是我的模型:
class User(AbstractUser):
id = models.AutoField(primary_key=True)
created_at = models.DateTimeField(auto_now_add=True)
username = models.CharField(unique=True, max_length=13)
first_name = models.CharField(max_length=32, null=True, default=None)
last_name = models.CharField(max_length=64, null=True, default=None)
class Results(models.Model):
quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateField(auto_now_add=True, blank=True, null=True)
score = models.FloatField()
在我看来,我想要这样的东西:(所有 Results.created 日期的总和 - 所有 User.created_at 日期的总和)/ len(所有用户)。我怎样才能做到这一点?
我使用聚合来编写这行代码进行测试:
Results.objects.filter(user__is_staff=False, user__role='applicant').aggregate(Avg(F('created')))
但它给了我这个错误:
You cannot use Sum, Avg, StdDev, and Variance aggregations on date/time fields in sqlite3 since date/time is saved as text.
【问题讨论】:
-
你应该使用
aggregate()方法(see docs) -
我编辑了我的问题。我使用了这个聚合,但它给了我一个错误,请参阅问题
标签: django