Я использую create_user () функция, которую Django обеспечивает для создания моих пользователей. Также я хочу хранить дополнительную информацию о пользователях. Таким образом, я пытался следовать инструкциям, данным в
http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users
но я не могу заставить это работать на меня. Существует ли пошаговое руководство, за которым я могу следовать, чтобы заставить это работать на меня?
Кроме того, после того как я добавил эти пользовательские поля, я должен был бы, очевидно, добавить / редактирование / удаляет данные от них. Я, может казаться, не нахожу инструкций относительно того, как сделать это.
Это просто еще одна модель. Вы манипулируете им точно так же, как манипулируете любой другой моделью, с которой сталкиваетесь.
Я не знаю о пошаговом решении (хотя уверен, что если хорошенько погуглить, то что-нибудь получится). Но вот краткое описание.
1) Создайте модель UserProfile
для хранения дополнительной информации и поместите ее в models.py
. Она может выглядеть примерно так:
class UserProfile(models.Model):
#required by the auth model
user = models.ForeignKey(User, unique=True)
middle_name = models.CharField(max_length=30, null=True, blank=True)
2) Сообщите вашему settings.py
о новом классе, добавив эту строку (с соответствующим именем):
AUTH_PROFILE_MODULE = "myapp.UserProfile"
3) Добавьте слушатель сигнала для создания пустой записи UserProfile
при добавлении нового пользователя. Вы можете найти отличный сниппет с инструкциями здесь.
4) При обработке записи нового пользователя вы можете заполнить также запись UserProfile
. Вот как я делаю вставку (обратите внимание на get_profile):
if (form.is_valid()):
cd = form.cleaned_data
user = User.objects.create_user(cd["UserName"], cd["Email"], cd["Password"])
user.first_name = cd["FirstName"]
user.last_name = cd["LastName"]
user.save()
#Save userinfo record
uinfo = user.get_profile()
uinfo.middle_name = cd["MiddleName"]
uinfo.save()
Вот и все. Это не исчерпывающая информация, но она должна указать вам правильное направление.
Обновление: Обратите внимание, что AUTH_PROFILE_MODULE
устарел с версии 1.5: https://docs.djangoproject.com/en/stable/releases/1.5/#auth-profile-module