[英]Setting a default value for a field in a formset in Django
在Django的表单集中,我们如何为需要http会话值的字段设置默认值? 由于需要会话来获取值,因此我们无法在模型类本身中设置默认值。 而且我无法理解在保存视图功能之前如何显式设置表单集中每个表单的值。
在FormSet的构造中设置初始属性会起作用,但是由于任何原因,我都会遇到编译错误。 代码是这样的:
formset = LineItemsInlineFormSet(initial=[{'updated_by':'user'}])
编译错误是: init ()获得了意外的关键字参数'initial'
我正在使用Django 1.1.1
任何见识将不胜感激。 提前致谢。
用初始数据实例化表单集的惯用法是:
data = {
'form-TOTAL_FORMS': u'2',
'form-INITIAL_FORMS': u'0',
'form-MAX_NUM_FORMS': u'',
'form-0-updated_by': u'user',
'form-1-updated_by': u'user',
}
formset = LineItemsInlineFormSet(data)
正如Jonny Buchanan指出的那样,这种方法为您提供了一个绑定的表单集,如果未提供所有必需的数据,它将显示验证错误。 如果不是您想要的,请创建表单集,将具有所需设置的自定义Form传递给django.forms.formsets.formset_factory()
。
通常, 在update时会自动将updated_by
设置为当前登录用户。 如果这是您想要的:
updated_by
字段; commit=False
save()
;否则为false。 updated_by
为当前用户; 和 commit=True
。 在管理站点中,可以使用内联方法方便地进行此操作:重写ModelAdmin.save_formset 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.