使用用户对象的 Django-rest-auth
Django-rest-auth using user object
我有一个 django 项目,我在其中使用 django-rest-auth 来验证用户。我的settings.py:
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',
)
我有两个模型:Exercise 和 Rating。我没有创建 User 模型,因为它必须由 django-rest-auth / django.contrib.auth 提供。
用户可以对特定练习给出多个评级。
我的 models.py 如下所示:
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)
根据上面的描述,我的 Rating 模型还应该包含 userid 作为外国键连同 exerciseid,对吧?
我怎样才能做到这一点?如何修改我的评级模型?我需要导入什么?
from django.contrib.auth.models import User
class Rating(models.Model):
user = models.ForeignKey(User)
# other fields
我想这就是您要找的。
Here 是我认为与您的问题相关的示例
我有一个 django 项目,我在其中使用 django-rest-auth 来验证用户。我的settings.py:
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',
)
我有两个模型:Exercise 和 Rating。我没有创建 User 模型,因为它必须由 django-rest-auth / django.contrib.auth 提供。 用户可以对特定练习给出多个评级。
我的 models.py 如下所示:
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)
根据上面的描述,我的 Rating 模型还应该包含 userid 作为外国键连同 exerciseid,对吧?
我怎样才能做到这一点?如何修改我的评级模型?我需要导入什么?
from django.contrib.auth.models import User
class Rating(models.Model):
user = models.ForeignKey(User)
# other fields
我想这就是您要找的。 Here 是我认为与您的问题相关的示例