Я следую ссылке https://stackoverflow.com/a/965883/1657010 для расширения пользователя django до профиля пользователя.Расширение пользователя с профилем пользователя в django (1.3)
#in models.py
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class UserProfile(models.Model):
user = models.OneToOneField(User)
emailId = models.CharField(max_length=200)
dateCreated = models.DateTimeField(blank=True, null=True)
#other fields here
def __str__(self):
return "%s's profile" % self.user
def create_user_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
#in settings.py
AUTH_PROFILE_MODULE = 'myapp.UserProfile'
То, что я не уверен, как я могу создать пользователя такой, что UserProfile пользователя и оба созданы и пользовательские поля в UserProfile, такие как EMAILID, dateCreated населены?
В views.py У меня есть следующие
def register_user(request):
json_data = json.loads(request.raw_post_data)
email=json_data['email'].lower()
pwd = json_data['password']
#hard-coded values for testing
UserProfile.user = User.objects.create_user('john', email, pwd)
userProfile, created = UserProfile.objects.get_or_create(emailId=email)
userProfile.password=pwd
Однако я получаю сообщение об ошибке AttributeError: объект 'Userprofile' не имеет атрибута 'user_id'. Я думаю, что я смешиваю понятия где-то здесь. Любая помощь приветствуется.
Спасибо за ответы. Код, который вы предоставили, работал! Я также был в состоянии сделать то же самое, используя следующее:
user = User.objects.create_user('john', email, pwd)
userProfile = user.get_profile()
userProfile.emailId = email
user.save()
userProfile.save()
Удивление, если оба подобны, или если есть какие-либо преимущества одного над другим, снова используя get_profile()
Спасибо!
Спасибо за ответы. Да, я заменил модуль AUTH_PROFILE –