为啥我得到一个“(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_fieldCharField,因此它的名称是 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应用程序中的错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我得到一个“不允许的方法”

我得到一个断点,我不知道为啥

为啥我得到一个没有 IPAddress 的 docker 容器?

为啥我在 listView 中得到最后一个标题? [关闭]

为啥我得到分段(核心转储)?

为啥我得到一个未定义的回报?