默认情况下,使用表单集显示的Django autofield是隐藏的。最好的展示方式是什么?在
目前,模型声明为
class MyModel:
locid = models.AutoField(primary_key=True)
...
当使用Django formsets呈现时
^{pr2}$它在页面上显示为
<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()
但这仍然没有
尝试更改默认字段类型:
编辑:已测试并有效。。。在
正如您所说,您没有使用您定义的自定义表单。这是因为你没有把它传给任何地方,所以Django不能知道。在
解决方案很简单-只需将自定义窗体类传递到modelformset_工厂:
编辑响应更新3:
首先,在错误的地方重新定义了locid—它需要在类级别,而不是
__init__
内部。在其次,将queryset放入form中根本不会起任何作用-forms不知道querysets。您应该回到之前的操作,在实例化formset时将其作为参数传入。(或者,您可以定义一个自定义的formset,但这似乎有点过头了。)
^{pr2}$好吧,上面的方法都不适合我。最后,我从模板方面解决了这个问题。在
有一个票证字段(http://code.djangoproject.com/ticket/10427),它向表单的模板变量添加“value”选项。例如,它允许
在{{表格.locid.value}}
待展示。这是一个补丁,可以使用“patch-p0”安装在django的SVN版本中文件.patch““
记住,那个{{表格.locid.value}}变量将与不可见表单一起使用,否则表单集的提交和保存操作将崩溃。
这与{{表格.locid.data}}-如上述罚单所述。
相关问题 更多 >
编程相关推荐