【问题标题】:Need to get user lists along Average in django while data in separate table需要在 django 中获取用户列表,而数据在单独的表中
【发布时间】:2019-05-29 07:11:34
【问题描述】:

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

模型 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 - login-time)

Name, email, avg_logged_in_time

【问题讨论】:

    标签: django django-models django-2.0


    【解决方案1】:

    我认为您的查询集看起来像这样。您可以查看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()
        )
    )
    

    【讨论】:

    • 实际上情况有点不同,我必须使用模型用户而不是历史记录
    • 我认为您仍然可以这样做。我已经编辑了我的答案。由于 Django 提供了反向关系,您仍然可以从 User 访问历史字段。
    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    相关资源
    最近更新 更多