mpe*_*pen 17 django django-forms
这大致是我正在尝试做的事情:
def post(request):
VehicleFormSet = formset_factory(StaffVehicleForm)
if request.method == 'POST':
vehicle_formset = VehicleFormSet(request.POST)
if 'add_vehicle' in request.POST:
if vehicle_formset.is_valid():
form_count = vehicle_formset.total_form_count()
vehicle_formset.forms.append(vehicle_formset._construct_form(form_count))
Run Code Online (Sandbox Code Playgroud)
基本上,如果用户单击"添加"按钮并且其条目有效,我想在表单集中添加另一个空白表单,并隐藏前一个表单.
上面代码的问题是我无法弄清楚如何增加total_form_count().我现在拥有它的方式,它将工作一次,然后如果你再次按下它,什么都不会发生,大概是因为form_count是相同的.我也不喜欢打电话_construct_form和依靠内部.
mpe*_*pen 11
class RequiredFormSet(BaseFormSet):
def add_form(self, **kwargs):
# add the form
tfc = self.total_form_count()
self.forms.append(self._construct_form(tfc, **kwargs))
self.forms[tfc].is_bound = False
# make data mutable
self.data = self.data.copy()
# increase hidden form counts
total_count_name = '%s-%s' % (self.management_form.prefix, TOTAL_FORM_COUNT)
initial_count_name = '%s-%s' % (self.management_form.prefix, INITIAL_FORM_COUNT)
self.data[total_count_name] = self.management_form.cleaned_data[TOTAL_FORM_COUNT] + 1
self.data[initial_count_name] = self.management_form.cleaned_data[INITIAL_FORM_COUNT] + 1
def add_fields(self, form, index):
super(RequiredFormSet, self).add_fields(form, index)
form.empty_permitted = False
Run Code Online (Sandbox Code Playgroud)
那样做.只花了7个小时才搞清楚.我仍然不知道为什么我需要.is_bound = False让初始值不要搞砸.
| 归档时间: |
|
| 查看次数: |
9500 次 |
| 最近记录: |