Я расширяю модель пользователя, но, похоже, у меня возникли проблемы с использованием моей новой формы администратора.У меня есть следующий код в models.py:
class Preference(models.Model):
choice = models.TextField(choices = (('grid', 'grid'), ('list','list')))
def __unicode__(self):
return self.choice
class UserProfile2(models.Model):
preference = models.ForeignKey(Preference, default = Preference.objects.get(id=2).id)
user = models.OneToOneField(User, unique=True)
def create_user_profile(sender, instance, created, **kwargs):
if created:
print 'creating user profile2'
u = UserProfile2.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
Следующий код находится в admin.py:
class UserProfileInline(admin.TabularInline):
model = UserProfile2
fk_name = 'user'
class CustomUserAdmin(UserAdmin):
inlines = [UserProfileInline,]
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
Следующее находится в settings.py:
AUTH_PROFILE_MODULE = 'userextension.UserProfile2'
Он работает правильно, когда пользователь не пытается управлять значением объекта предпочтения в admin, и создает нового пользователя, используя значение по умолчанию.Но если пользователь пытается перейти от значения по умолчанию «list» и вместо этого использует «grid», я получаю ошибку «Duplicate Entry for Key user_id».
Нужно ли явно получать значение изформу администратора для дополнительного поля и сохранить как объект userprofile2, так и объект пользователя?Если так, как это связано с ошибкой, которую я получаю?Я не нашел много документации о том, как это сделать, и был бы очень признателен за любое направление.
Обновление: это тоже кажется важным: когда я удаляю значение по умолчанию для предпочтения в модели UserProfile2, я получаю сообщение об ошибке «Столбец 'preference_id' не может быть пустым"
Спасибо, что принялипосмотрите на мой вопрос.