默认情况下,使用表单集显示的 Django 自动域是隐藏的。最好的展示方式是什么?
目前,模型声明为,
class MyModel:
locid = models.AutoField(primary_key=True)
...
当使用 Django 表单集呈现时,
class MyModelForm(ModelForm):
class Meta:
model = MyModel
fields = ('locid', 'name')
它在页面上显示为,
<input id="id_form-0-locid" type="hidden" value="707" name="form-0-locid"/>
谢谢。
编辑
我这样创建表单集 -
LocFormSet = modelformset_factory(MyModel)
pformset = LocFormSet(request.POST, request.FILES, queryset=MyModel.objects.order_by('name'))
第二次编辑
看起来我没有使用我在那里定义的自定义表单类,所以这个问题需要稍微修改..
我如何从自定义表单(将显示隐藏字段)创建表单集,以及如何使用自定义查询集?
目前,我可以从 BaseModelFormSet 类继承并使用自定义查询集,或者我可以使用 ModelForm 类将自定义字段添加到表单。有没有一种方法可以用一个表单集来完成这两项工作?
第三次编辑
我现在正在使用,
class MyModelForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
locid = forms.IntegerField(min_value = 1, required=True)
self.fields['locid'].widget.attrs["type"] = 'visible'
self.queryset = MyModel.objects.order_by('name')
class Meta:
model = MyModel
fields = ('locid', 'name')
LocFormSet = modelformset_factory(MyModel, form = MyModelForm)
pformset = LocFormSet()
但这还是不行
- 显示位置
- 使用指定的自定义查询。
请您参考如下方法:
尝试更改默认字段类型:
from django import forms
class MyModelForm(ModelForm):
locid = forms.IntegerField(min_value=1, required=True)
class Meta:
model = MyModel
fields = ('locid', 'name')
编辑: 测试和工作...
