扩展Django用户模型:外键错误
我想在Django的用户模型中添加一个新的字段。根据文档的说明,我已经这样扩展了字段:
class Employee(models.Model):
# This field is required.
user = models.OneToOneField(User)
manager_id = models.ForeignKey(User, related_name='employees')
我希望manager_id能够自我引用,也就是说它可以关联到一个用户,而不是新建一个经理表,并且我想在普通用户页面上显示这个新字段。为此,按照文档的指示,我还添加了以下内容:
class EmployeeInline(admin.StackedInline):
model = Employee
can_delete = False
verbose_name_plural = 'employee'
# Define a new User admin
class UserAdmin(UserAdmin):
inlines = (EmployeeInline, )
# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
但是,我遇到了以下异常:
<class 'dhtmlScheduler.models.Employee'> has more than 1 ForeignKey to <class 'django.contrib.auth.models.User'>
有没有人能给我一些建议?
1 个回答
3
如果你真的想让 manager_id
自我引用,也就是指向自己,那么Aamir在你问题下的评论就是正确的做法。
如果你希望 manager_id
指向 User
模型,就像你示例代码中那样,你需要告诉 EmployeeInline
应该使用哪个外键。
可以这样做:
class EmployeeInline(admin.StackedInline):
model = Employee
can_delete = False
verbose_name_plural = 'employee'
fk_name = 'manager_id'
这样一来,就能在用户的管理页面上显示该用户的员工。有关更多细节,可以查看Django文档。