2016-03-26 2 views
0

Ich habe ein Django-Projekt, in dem ich eine Django-Rest-Auth verwenden, um Benutzer zu authentifizieren. Mein settings.py:Django-rest-auth mit Benutzerobjekt

INSTALLED_APPS = (
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.sites', 
'rest_framework', 
#following was added to allow cross domain requests 
'corsheaders', 
#following were added for ssl thing 
'djangosecure', 
'sslserver', 
#following were added for authentication 
'rest_framework.authtoken', 
'rest_auth', 
'allauth', 
'allauth.account', 
'rest_auth.registration', 
'demo', 
) 

Ich habe zwei Modelle: Übung und Rating. Ich habe kein Benutzer Modell erstellt, wie es von django-rest-auth/django.contrib.auth zur Verfügung gestellt werden muss. Ein Benutzer kann einer bestimmten Übung mehrere Bewertungen geben.

Mein models.py aussehen wie folgt:

class Exercise(models.Model): 

#Field for storing exercise type 
EXERCISE_TYPE_CHOICES = (
    (1, 'Best stretch'), 
    (2, 'Butterfly reverse'), 
    (3, 'Squat row'), 
    (4, 'Plank'), 
    (5, 'Push up'), 
    (6, 'Side plank'), 
    (7, 'Squat'), 
) 
exercise_type = models.IntegerField(choices=EXERCISE_TYPE_CHOICES) 

#Field for storing intensity level 
INTENSITY_LEVEL_CHOICES = (
    (1, 'Really simple'), 
    (2, 'Rather Simple'), 
    (3, 'Simple'), 
    (4, 'Okay'), 
    (5, 'Difficult'), 
    (6, 'Rather Difficult'), 
    (7, 'Really Difficult'), 
) 

intensity_level = models.IntegerField(choices=INTENSITY_LEVEL_CHOICES) 
#Field for storing video url for a particular exercise 
video_url = models.URLField() 
#Field for storing description of the exercise 
description = models.CharField(max_length=500) 


class Rating(models.Model): 

#Field for storing exercise type 
exercise = models.ForeignKey(Exercise, related_name='ratings', blank=True, null=True) 
#Field for storing rating 
RATING_CHOICES = (
    ('H', 'Happy'), 
    ('N', 'Neutral'), 
    ('S', 'Sad'), 
) 
value = models.CharField(max_length=1,choices=RATING_CHOICES) 

Nach der Beschreibung über meinem Bewertung Modell auch userid als Fremdschlüssel zusammen mit exerciseid direkt enthalten sollte?

Wie kann ich das erreichen? Wie kann ich mein Bewertungsmodell ändern? Was muss ich importieren?

Antwort

0
from django.contrib.auth.models import User 

class Rating(models.Model): 
    user = models.ForeignKey(User) 
    # other fields 

Ich denke, das ist, was Sie suchen. Here ist ein Beispiel, das ich denke, ist mit Ihrer Frage

+0

verwandt Aber sollte es nicht Fremdschlüssel anstelle von oneTooneField sein? – Nitish

+0

Entschuldigung. Mein Fehler. Ich habe Ihre Frage sehr schnell gelesen und dachte, dass Ihre Frage darin besteht, ein Feld hinzuzufügen, das dem Benutzer in Ihrem Modell entspricht. Ich werde die Antwort modifizieren. – voger