Python django同一型号的两个外键-管理错误
我有一个Profiles应用程序,它有一个名为profile的模型,我使用该模型来扩展django内置的用户模型,而无需对其进行子类化 型号.pyPython django同一型号的两个外键-管理错误,python,django,Python,Django,我有一个Profiles应用程序,它有一个名为profile的模型,我使用该模型来扩展django内置的用户模型,而无需对其进行子类化 型号.py class BaseProfile(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='owner',primary_key=True) supervisor = models.ForeignKey(settings.AU
class BaseProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='owner',primary_key=True)
supervisor = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='supervisor', null=True, blank=True)
@python_2_unicode_compatible
class Profile(BaseProfile):
def __str__(self):
return "{}'s profile". format(self.user)
class UserProfileInline(admin.StackedInline):
model = Profile
class NewUserAdmin(NamedUserAdmin):
inlines = [UserProfileInline ]
admin.site.unregister(User)
admin.site.register(User, NewUserAdmin)
admin.py
class BaseProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='owner',primary_key=True)
supervisor = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='supervisor', null=True, blank=True)
@python_2_unicode_compatible
class Profile(BaseProfile):
def __str__(self):
return "{}'s profile". format(self.user)
class UserProfileInline(admin.StackedInline):
model = Profile
class NewUserAdmin(NamedUserAdmin):
inlines = [UserProfileInline ]
admin.site.unregister(User)
admin.site.register(User, NewUserAdmin)
管理员
错误为
<class 'profiles.admin.UserProfileInline'>: (admin.E202) 'profiles.Profile' has more than one ForeignKey to 'authtools.User'.
:(admin.E202)“profiles.Profile”有多个指向“authtools.User”的外键。
显然,我想选择一个用户作为另一个用户的主管。我认为模型中的关系还可以,抱怨的是admins.py文件。有什么想法吗?这是一个我刚刚测试过的工作示例
class Task(models.Model):
owner = models.ForeignKey(User, related_name='task_owner')
assignee = models.ForeignKey(User, related_name='task_assigned_to')
在admin.py中
class TaskInLine(admin.TabularInLine):
model = User
@admin.register(Task)
class MyModelAdmin(admin.ModelAdmin):
list_display = ['owner', 'assignee']
inlines = [TaskInLine]
您需要使用多个内联管理 当一个模型具有多个指向同一父模型的ForeignKey时,需要在内联管理中指定
fk_name
属性:
class UserProfileInline(admin.StackedInline):
model = Profile
fk_name = "user"
class SupervisorProfileInline(admin.StackedInline):
model = Profile
fk_name = "supervisor"
class NewUserAdmin(NamedUserAdmin):
inlines = [UserProfileInline, SupervisorProfileInline]
Django提供了一些处理此问题的文档:将相关的名称添加到UserThreaded,但它不起作用我已经制作了一个类似的示例,它确实起作用了,我的问题是管理界面和error@Bob哈基姆的问题恰恰相反。在您的示例中,您将无法创建一个UserAdmin和一个model Task的内联管理员。fk_name='user'在UserProfileInline中为我解决了这个问题,我不需要添加另一个SupervisorProfileInline,因为我只需要一个下拉列表来显示所有用户,我选择一个作为管理员…谢谢