我有一个模型,Charfield
其中没有设置任何选项。现在在管理面板中,在我显示此模型的内联管理中,我想显示一个下拉列表,可以填写(其中需要动态获取选项并且显示与我想要填写的值不同在该领域)。在不更改模型的情况下如何实现这一点?
这是我尝试过的(还不是动态的):
class MyModelInline(TabularInline):
model = Mapping
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name == 'status':
kwargs['choices'] = (
('accepted', 'Accepted'),
('denied', 'Denied'),
)
return super(MyModelInline, self).formfield_for_choice_field(db_field, **kwargs)
return super(MyModelInline, self).formfield_for_dbfield(db_field, **kwargs)
但是,当我打开我的模型时,我得到一个错误__init__() got an unexpected keyword argument 'choices'
。我查看了堆栈跟踪,发现这就是__init__
它所说的:
<path>/django/forms/fields.py in __init__
214 super(CharField, self).__init__(*args, **kwargs)
我应该改变什么才能使这项工作?我正在使用 Python 3.5 和 Django 1.8.14。