我跟着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,它不会保存或工作或似乎更改任何内容。我希望它只显示一个。什么可能导致两个配置文件?
答案 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'