Добавление пользовательских полей пользователям в django

Я использую create_user () функция, которую Django обеспечивает для создания моих пользователей. Также я хочу хранить дополнительную информацию о пользователях. Таким образом, я пытался следовать инструкциям, данным в

http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

но я не могу заставить это работать на меня. Существует ли пошаговое руководство, за которым я могу следовать, чтобы заставить это работать на меня?

Кроме того, после того как я добавил эти пользовательские поля, я должен был бы, очевидно, добавить / редактирование / удаляет данные от них. Я, может казаться, не нахожу инструкций относительно того, как сделать это.

26
задан Gaurav Sharma 22 May 2010 в 05:18
поделиться

2 ответа

Это просто еще одна модель. Вы манипулируете им точно так же, как манипулируете любой другой моделью, с которой сталкиваетесь.

-2
ответ дан 28 November 2019 в 07:06
поделиться

Я не знаю о пошаговом решении (хотя уверен, что если хорошенько погуглить, то что-нибудь получится). Но вот краткое описание.

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

18
ответ дан 28 November 2019 в 07:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: