Django自定义身份验证用户会在admin中生成2个字段

时间:2014-08-13 20:37:35

标签: django templates admin

我跟着https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#extending-the-existing-user-model为用户玩过的游戏添加了ManyToMany字段。

class Profile(models.Model):
    """ Extended authentication profile storing specific info """
    user = models.OneToOneField(User)
    owned = models.ManyToManyField(OwnedStruct)

然后通过以下

添加到管理员
class ProfileInline(admin.StackedInline):
    """ Show profile inline with user """
    model = Profile
    verbose_name_plural = 'profile'

class UserProfileAdmin(UserAdmin):
    """ Add inline to User """
    inlines = (ProfileInline,)
...
admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)

在数据库中看起来很好,但在管理员中我看到两个代表ManyToMany OwnedStruct的字段。在弄乱用户之前,它会将第一个显示为" Profile#1"第二个是"个人资料#2"。从配置文件1的M2M中选择一些选项并单击保存后,它似乎正确更新该字段。如果我更新配置文件#2,它不会保存或工作或似乎更改任何内容。我希望它只显示一个。什么可能导致两个配置文件?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,问题是由于某种原因,django admin不关心OneToOneField并为Profile创建多个内联表单。您可以尝试通过向max_num = 1课程添加ProfileInline来解决此问题。

它看起来像是:

class ProfileInline(admin.StackedInline):
    """ Show profile inline with user """
    model = Profile
    max_num = 1
    verbose_name_plural = 'profile'