需要沿着平均值在Django中获取用户列表,而数据在单独的表中

时间:2019-05-29 07:11:34

标签: django django-models django-2.0

我正在尝试获取用户列表以及平均登录时间

模型1:

class User(models.Model):
    name = models.CharField(max_length=200) 
    age = models.CharField(max_length=200)
    email = models.CharField(max_length=200)

模型2:

class History(models.Model):
    login_time = models.DateTimeField()
    logout_time = models.DateTimeField()
    user = models.ForeignKeyField(User, related_name="user_relation")

我需要以下格式的列表中的记录avg_logged_in_time将平均为(logout_time-登录时间)

Name, email, avg_logged_in_time

1 个答案:

答案 0 :(得分:0)

我认为您的查询集看起来像这样。您可以检查docs了解更多信息。另外,您可以检查here以获得有关F查询表达式的信息。

User.objects.values(
    'name', 'email', 'avg_logged_in_time'
).aggregate(
    avg_logged_in_time=Avg(
        F('history__logout_time') - F('history__login_time'), output_field=models.DateTimeField()
    )
)