2015-10-10 3 views
1

У меня есть модель, которая является расширением модели пользователя в Django 1.8. Для этого я также подключаюсь к базе данных MySQL.Создание нового экземпляра пользовательской модели пользователя в Django

class LibraryUser(models.Model): 
    user_id = models.OneToOneField(User) 
    is_catalogue_subscriber = models.BooleanField(default=True) 
    is_research_subscriber = models.BooleanField(default=True) 
    library_membership_number = models.CharField(max_length=64) 

Причина, почему я расширил User модель, конечно, использовать рамки аутентификации.

Итак, теперь я хочу создать новый LibraryUser, используя library_membership_number в качестве имени пользователя для входа. Как мне это сделать? Создать ли я User, а затем указать LibraryUser?

some_ т.е. с учетом переменных либо полученных с помощью POST или миграции пользователей в новую таблицу

u = User.objects.create_user(email=some_email, password=some_password) 
lu = LibraryUser(library_membership_number, user_id = u.id) 
lu.save() 

Или есть правильный способ сделать это? Попытался найти онлайн, но не смог найти что-то, чтобы конкретно решить эту проблему.

ответ

2

Вы должны присвоить значение для выбора полей в следующем виде:

lu = LibraryUser(library_membership_number= '...', user_id = user) 
lu.save() 
  • library_membership_number

    Вы не можете просто присвоить переменную library_membership_number. model - это объект, содержащий поля. Вы должны назначить это поле и назначить его: library_membership_number= '...', или model не может разобрать, какое поле вы будете хранить.

  • user_id

    Он определил foreignkey заранее. Он может принять еще один объект model для хранения: user_id = user. Не указывайте атрибут user для хранения в LibraryUser.