[英]Django, get initials data from field in formset with shell
我在 Django 1.11 中使用 formset,并在模板渲染中完成所有工作。 现在我想在 python shell 中测试表单集。 所以我做了一个简单的表格,然后是一个带有首字母数据的表格集(2):
>>> from django import forms
>>> class my_formset(forms.Form):
... my_field_1=forms.IntegerField()
... my_field_2=forms.IntegerField()
...
>>> values=[{'my_field_1':10,'my_field_2':15}, {'my_field_1':84,'my_field_2':6}]
>>> values
[{'my_field_2': 15, 'my_field_1': 10}, {'my_field_2': 6, 'my_field_1': 84}]
建筑形式集:
>>> from django.forms import formset_factory
>>> formset=formset_factory(my_formset,extra=0)
>>> my_data_fs=formset(initial=values)
结果表:
>>> my_data_fs
<django.forms.formsets.my_formsetFormSet object at 0x7fdb688dda90>
>>> my_data_fs.forms
[<my_formset bound=False, valid=Unknown, fields=(my_field_1;my_field_2)>, <my_formset bound=False, valid=Unknown, fields=(my_field_1;my_field_2)>]
现在我想获取首字母数据:
>>> my_data_fs.forms[0]
<my_formset bound=False, valid=Unknown, fields=(my_field_1;my_field_2)>
>>> my_data_fs.forms[0].fields
OrderedDict([('my_field_1', <django.forms.fields.IntegerField object at 0x7fdb688dd7b8>), ('my_field_2', <django.forms.fields.IntegerField object at 0x7fdb688dd710>)])
但如果我看到单个字段,我会得到这个:
>>> my_data_fs.forms[0].fields['my_field_1']
<django.forms.fields.IntegerField object at 0x7fdb688dd7b8>
>>> my_data_fs.forms[0].fields['my_field_1'].value
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'IntegerField' object has no attribute 'value'
如果我使用首字母缩写,我会得到空回应
>>> my_data_fs.forms[0].fields['my_field_1'].initial
>>>
我需要做什么才能获得我的姓名首字母数据?
您正在寻找的可能是: print(my_data_fs.forms[0].initial)
这样您就可以访问未绑定表单上的初始数据
查看绑定和未绑定表单上的字段有什么区别https://docs.djangoproject.com/en/1.11/ref/forms/api/#module-django.forms
从文档中可以清楚地看出,为了访问数据print(bound_form['subject'].data)
必须使用data关键字初始化表单,换句话说有界,但如果您只想访问初始数据,您仍然可以这样做就像我在第一个代码示例中所做的那样,在未绑定的表单上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.