Аутентификация пользователя Django - PullRequest
1 голос
/ 29 апреля 2011

Я пытаюсь настроить аутентификацию пользователя для моего проекта django, но я продолжаю получать ошибку базы данных. UserProfile_User не существует. Я попробовал большинство примеров онлайн, но ни один не решил проблему. Ниже приведен код, который я сейчас пробую. Любые соответствующие указатели будут с благодарностью. модель профиля пользователя, которую я сейчас пробую.

    from datetime import datetime
    from django.db import models
    from django.contrib.auth.models import User


    class UserProfile(models.Model):
        user = models.OneToOneField(User)    
        dob = models.DateField(default=datetime.today().year - 18)

        def __unicode__(self):
            return ('%s' % (self.user.username))

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Использование OneToOneField хорошо в этом случае, но это не значит, что профиль будет создан для вас.Довольно просто создать профиль с помощью сигнала:

from django.contrib.auth.models import User
from django.db.models.signals import post_save

def user_post_save(sender, instance, created, **kwargs):
    # Creates user profile
    if created:
        profile, new = UserProfile.objects.get_or_create(user=instance)

post_save.connect(user_post_save, sender=User)

Это будет включено в ваш models.py чуть ниже определения UserProfile и гарантирует, что у всех ваших пользователей есть профиль, связанный сим.

0 голосов
/ 29 апреля 2011

Я никогда не использую OneToOneField, но я предполагаю, что это требует двунаправленного существования обоих (пользователя и его профиля).Если один из обоих не существует, это вызовет исключение.Может быть, вам лучше с ForeignKey.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...