Dom*_*ola 19 django django-forms
我想摆脱Django在模拟窗体上表示外键的选择输入中添加的"-------------"选项
它得到回答,您可以使用该empty_label=none选项,但我有一个的ModelForm,不是正规的形式和覆盖领域是不允许的.
我知道我可以覆盖__init__()ModelForm 的方法,以便使用修改ModelChoiceField的查询集
self.fields['my_foreign_key'].queryset = ....
Run Code Online (Sandbox Code Playgroud)
但这真的很难看,因为这发生在"Main"模型上的+10个foreign_keys上,并且不仅仅是基于这个模型的Modelform
整个背景:
blank=True, unique=True选项,这样我就可以,每个列表,创建一个"---No information yet---"具有,你打赌纪录,空值,而不是一个三个字母的代码...现在的情况是:我得到一个带有两个"空白值"选择的选择输入字段:django one和mine,一个接一个.我在这里也错过了'empty_label = none`选项...
Yuj*_*ita 32
如果你想删除所有ModelChoiceField你可以做的事情的空白选择..
class Form(forms.ModelForm):
class Meta:
model = MyModel
def __init__(self, *args, **kwargs):
super(Form, self).__init__(*args, **kwargs)
modelchoicefields = [field for field_name, field in self.fields.iteritems() if
isinstance(field, forms.ModelChoiceField)]
for field in modelchoicefield:
field.empty_label = None
Run Code Online (Sandbox Code Playgroud)
但这会取代所有ModelChoiceField的,所以也许更细粒度的东西:
for fieldname in ('field1','field2','field3','field4','field5','field6'):
self.fields[fieldname].empty_label = None
Run Code Online (Sandbox Code Playgroud)
当然比__init__你提到的覆盖更容易!
您可以使用2017+使用:
forms.ModelChoiceField(... empty_label=None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10416 次 |
| 最近记录: |