django - Django Custom User 没有显示带有外键的额外字段作为选择列表
问题描述
我有一个自定义用户
class CustomUser(AbstractUser):
registration_code = models.ForeignKey(RegistrationCode, null=True)
...
def __str__(self):
return self.username
class RegistrationCode(models.Model):
code = models.CharField(max_length=30, null=True, blank=True)
def __str__(self):
return self.code
在管理页面中,我希望能够设置“registration_code”。
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['email', 'username', 'registration_code']
fieldsets = (
(None, {
'fields': ('email', 'username', 'registration_code')
}),
)
admin.site.register(CustomUser, CustomUserAdmin)
但是在管理页面上,我没有得到选择列表。但是默认输入字段:
如果我编辑registration_code并尝试保存,我会得到:
Cannot assign "'2'": "CustomUser.registration_code" must be a "RegistrationCode" instance.
这听起来合乎逻辑,因为我需要输入一个 RegistrationCode 实例。
相同的结构适用于其他模型,但对于自定义用户却不是?这真让我抓狂。有人知道为什么我没有得到选择列表吗?
解决方案
Django 通过模型实例处理外键而不是赋值。所以问题来自您的 CustomUserChangeForm ,其中 registratio_code 必须是 ModelChoiceField
推荐阅读
- webrtc - 使用openvidu进行视频会议几秒钟后,MacBook中的相机将被冻结
- r - 使用列号而不是列名的 T 检验
- azure - 如何在 Azure SQL 中维护内存中的表副本?
- networking - ikev2 vpn连接
- r - R:列出具有扩展名和名称的目录中的文件
- android - Ionic React Native - 请求出错:/storage/emulated/0/Download/newPicture.png:打开失败:EACCES(权限被拒绝)
- powershell - Powershell:使用完整路径访问 Outlook 文件夹
- typescript - 如何在 React hooks-Typescript 中定义泛型数组类型?
- css - 为什么 CSS 背景过滤器属性在我的某些设备上的 Firefox 中不起作用?
- ruby-on-rails - 如何以最佳方式将纱线包与 Rails 6 集成?