我正在扩展用户模型,但似乎在使用我的新管理表单时遇到了问题。我在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'
当用户不尝试在管理员中控制偏好对象的值时,它可以正常工作,并使用默认值创建新用户。但是,如果用户尝试从“list”的默认值切换并改用“grid”,我会收到“Key user_id 的重复条目”错误。
我是否需要从管理表单中显式获取额外字段的值并保存 userprofile2 对象和 user 对象?如果是这样,这与我收到的错误有什么关系?我还没有找到太多关于如何做到这一点的文档,并且非常感谢任何方向。
更新:这似乎也很重要:当我在 UserProfile2 模型中删除首选项的默认值时,我得到的错误是“列'preference_id'不能为空”
感谢您查看我的问题。