python - 扩展Django用户模型: ForeignKey Error

标签 python django

我正在尝试扩展 Django 用户模型以包含另一个字段。正如文档中所述,我对该字段进行了如下扩展:

   class Employee(models.Model):
    # This field is required.
    user = models.OneToOneField(User)
    manager_id = models.ForeignKey(User, related_name='employees')

我希望 manager_id 能够 self 引用并与用户相关(而不是定义新的经理表),并且只需在常规用户页面中显示新字段。为此,按照文档中的指示,我还添加了以下内容:

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'>

有人可以指点一下吗?

最佳答案

如果您确实希望 manager_id 具有 self 引用性,那么阿米尔对您的问题的评论就是正确的选择。

如果您希望 manager_id 像示例代码中那样成为对 User 模型的引用,则需要告诉 EmployeeInline 使用哪个外键。

像这样:

class EmployeeInline(admin.StackedInline):
    model = Employee
    can_delete = False
    verbose_name_plural = 'employee'
    fk_name = 'manager_id'

这将在用户的管理页面上显示用户的员工。 Django docs有更多细节。

关于python - 扩展Django用户模型: ForeignKey Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690461/

相关文章:

python - django 什么时候运行 OneToOneField 的查询?

Python:urllib.error.HTTPError:HTTP 错误 404:未找到

python - django.db.migrations.exceptions.NodeNotFoundError

python - 如何使用 Numpy 在 Python 中 reshape 数组?

python - 为什么 scipy.stats.nanmean 给出与 numpy.nansum 不同的结果?

html - 内联谷歌样式表链接到一个 div

Python Social Auth 多范围额外数据

django - 如何使用 smtp.EmailBackend 在 Django 中发送电子邮件而不通过邮件服务器进行身份验证

python - Matplotlib 背景在黑暗模式下与 vscode 主题匹配,看不到轴

python - 在Python中读取文件并将列放入数组中