为啥我得到一个“(admin.E003)'raw_id_fields [N]'的值必须是ForeignKey或ManyToManyField。” Django应用程序中的错误?
Posted
技术标签:
【中文标题】为啥我得到一个“(admin.E003)\'raw_id_fields [N]\'的值必须是ForeignKey或ManyToManyField。” Django应用程序中的错误?【英文标题】:Why I am getting an "(admin.E003) The value of 'raw_id_fields[N]' must be a ForeignKey or ManyToManyField." error in Django app?为什么我得到一个“(admin.E003)'raw_id_fields [N]'的值必须是ForeignKey或ManyToManyField。” Django应用程序中的错误? 【发布时间】:2018-05-04 12:59:42 【问题描述】:我想进行架构迁移,只需将 1 个字段添加到 Model 和 ModelAdmin。
class MyModel(models.Model):
some_field = models.ForeignKey(SomeModel)
my_new_field = models.CharField(max_length=20, blank=True, null=True, choices=[(b'1', b'1'), (b'2', b'2')])
class MyModelAdmin(admin.ModelAdmin):
list_display = ['some_field', 'my_new_field']
raw_id_fields = ('some_field', 'my_new_field',)
我得到:(admin.E003) 'raw_id_fields[1]' 的值必须是 ForeignKey 或 ManyToManyField。
我该如何解决这个问题? 我用 Python 2.7、Django 1.8 和 PostgreSQL 编写了一个应用程序。我还将 Docker 容器用于后端和 PostgreSQL。
【问题讨论】:
【参考方案1】:来自docs:
raw_id_fields 是您希望将其更改为 ForeignKey 或 ManyToManyField 的 Input 小部件的字段列表
my_new_field
是 CharField
,因此它的名称是 raw_id_fields
的无效元素。此类属性适用于 关系字段,您不希望从查询集中生成默认选择下拉菜单的开销,但希望使用通用输入来输入 原始 ID .只需将您的字段添加到 fields
即可:
class MyModelAdmin(admin.ModelAdmin):
# ...
fields = ['some_field', 'my_new_field']
raw_id_fields = ['some_field']
【讨论】:
以上是关于为啥我得到一个“(admin.E003)'raw_id_fields [N]'的值必须是ForeignKey或ManyToManyField。” Django应用程序中的错误?的主要内容,如果未能解决你的问题,请参考以下文章