#django #extending
#django #расширение
Вопрос:
Я расширяю пользовательский объект в django и создаю профиль пользователя. Итак, используя хук post_save, я сохраняю профиль пользователя следующим образом:
class UserProfile(models.Model):
user = models.OneToOneField(User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
userObj, createdUser = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
Это отлично работает, когда я запускаю оболочку через python manage.py оболочка; сохранение объекта пользователя и профиля пользователя в таблицах, но если я протестирую, запустив запрос, в views.py для обработки этого запроса я делаю следующее
def handleRequest(request):
user = User(username="test",email="test",password="test")
user.save()
Конечно, я создал HttpResponse и также вернул ответ, но опустил его для краткости. В результате я получаю запись пользователя, сохраненную в auth_user, но без профиля пользователя. В чем дело? Пожалуйста, помогите.
Комментарии:
1. вы смотрели на django-profiles ?
Ответ №1:
не удается получить доступ к профилю пользователя, потому что у вас в профиле пользователя есть связь.
вам нужно добавить поля.
class UserProfile(models.Model):
url = models.URLField()
home_address = models.TextField()
phone_numer = models.PhoneNumberField()
user = models.ForeignKey(User, unique=True)
для получения дополнительной информации перейдите по следующей ссылке
http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/
Комментарии:
1. да, я уже смотрел на эту строку раньше, и она не будет работать последовательно. Я проведу расследование и попробую это снова .. Я видел множество ссылок в Интернете о том, как расширить пользовательскую модель … но со всеми из них возникли проблемы. Тем временем я больше не использую перехват post_save и просто создаю объект профиля пользователя вручную в методе обработчика запроса в файле view. Спасибо за ссылку.