2016-09-02 1 views
-1

I zwei Tabellen in meiner Datenbank, die für dieses Problem relevant sind:Django Ansicht Daten aus zwei Modellen in einer einzigen Abfrage zu holen

exercise_state mit folgenden Feldern:

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

auth_user mit folgenden Feldern:

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

Im Moment bin ich einige Daten aus meiner Sicht zu holen wie folgt:

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) 

Jetzt möchte ich diese Ergebnisse weiter für bestimmte Gruppe von Benutzernamen, dh filtern, Nutzernamen, diese beginnt mit ‚yg_‘ (Ich habe zwei Sätze von Benutzernamen registriert In meinem System beginnt eine Gruppe mit 'yg' und die andere mit 'yg_'. Da der Benutzername kein Feld exercise_state ist, bin ich mir nicht sicher, wie es weitergehen soll.

Wie kann ich das erreichen?

+0

Mögliches Duplikat [Django Filterobjekte] (http://stackoverflow.com/questions/39244058/django- Filter-Objekte) – Sayse

+0

Es war meine Frage, das ist richtig. Aber ich hole Daten direkt aus der Benutzertabelle mit dem Feld 'Benutzername'. Hier ist es mehr wie Kreuztabellenabfrage. – Nitish

+0

Ah richtig, nach dem Aussehen der Abfrage, die Sie hier gezeigt haben, gibt es keine Beziehung zwischen den Modellen. Sie sollten das wie in den Dokumenten ändern, dann wird Ihre Frage trivial – Sayse

Antwort

0

Ich löste es mit dem Code des Stückes folgenden, den zusätzlichen Teil in Filteranweisung siehe:

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) 
Verwandte Themen