【问题标题】:Django view fetching data from two models in a single queryDjango 视图在单个查询中从两个模型中获取数据
【发布时间】:2016-09-02 07:05:27
【问题描述】:

我的数据库中有 两个 表与此问题相关:

exercise_state 包含以下字段:

| id | intensity_level | progress | exercise_id | user_id | current_date | user_rating |

auth_user 具有以下字段:

| id | password | last_login | is_superuser | username | first_name | last_name | email | is_staff | is_active | date_joined |

现在我在我的视图中获取一些数据,如下所示:

def get_specific_exercise_finish_count(request, exerciseId):
    # Number of users who completed a specific exercise
    specific_exercise_finish_count = Exercise_state.objects.filter(exercise_id=exerciseId, intensity_level=7).count()

    data = {}
    data['count'] = specific_exercise_finish_count

    return JSONResponse(data)

现在我想针对特定的用户名集进一步过滤这些结果,即以“yg_”开头的用户名(我在我的系统中注册了两组用户名,一组以“yg”开头,另一组以“yg_”开头) .由于用户名不是 exercise_state 的字段,我不知道如何继续。

我怎样才能做到这一点?

【问题讨论】:

  • Django filter objects的可能重复
  • 这是我的问题,没错。但是我直接从具有“用户名”字段的用户表中获取数据。这里更像是跨表查询。
  • 啊,好吧,从您在此处显示的查询来看,模型之间没有任何关系。您应该根据文档进行更改,然后您的问题就变得微不足道了

标签: django django-views


【解决方案1】:

我用以下代码解决了这个问题,请参阅过滤器语句中的额外部分:

def get_specific_exercise_finish_count_memoryGames(request, exerciseId):
    # Number of users who completed a specific exercise
    specific_exercise_finish_count_memoryGames = Exercise_state.objects.filter(exercise_id=exerciseId, intensity_level=7, user__username__startswith='yg_').count()

    data = {}
    data['count'] = specific_exercise_finish_count_memoryGames

    return JSONResponse(data)

【讨论】:

    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多