gpt4 book ai didi

python - 基于 POST 中的数据的 Django 表单集中的初始表单数量增加?

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:46 26 4
gpt4 key购买 nike

我的页面上有 django 表单集,还有几个额外的表单;我只想向用户(最初)显示其中已有数据的表单。

目前我通过将每个表单呈现为隐藏来处理此问题:

{% for form in incorporate_directors_formset %}
<tbody class="incorporate_directors_formset_div subform incorporate_directors_formset_invisible_div" id="incorporate_directors_formset_div_{{ forloop.counter }}">
{{ form }}
</tbody>
<tr class="magic-last-row invisible"><td colspan=2><div></div></td></tr>
{% endfor %}

[ .incorporate_directors_formset_invisible_div 只是设置 display:none;]

然后使用 javascript 公开那些已经有数据的:

  for(i = directors_initialforms.val(); i > 0; i--)
director_form_to_display($('.incorporate_directors_formset_invisible_div').first(), false);

[director_form_to_display 几乎只是删除类 .incorporate_directors_formset_invisible_div 并增加 TOTAL_FORMS 计数]

到目前为止,还不错。当表单集只包含初始数据时,这非常有效。

现在,我的问题是,当在表单中输入一些数据时,表单验证为无效,INITIAL_FORMS 值保持原样,因此上面的代码不会显示现有的,但错误的形式。

在我看来,如何增加 INITIAL_FORMS 计数以匹配浏览器发回的 TOTAL_FORMS 计数?或者,或者,以其他方式确保 INITIAL_FORMS 计数足够大?

我已经尝试过 holding_formset.initial_forms = holding_formset.forms 但结果是:

Traceback (most recent call last):

File "<debugger>", line 1, in <module>
holding_formset.initial_forms = holding_formset.forms
AttributeError: can't set attribute

最佳答案

原来解决方法是使用formset的管理表单修改实际请求数据:

from django.forms.formsets import INITIAL_FORM_COUNT
if formset.initial_form_count() < formset.total_form_count():
manform = formset.management_form
prefixed_name = manform.add_prefix(INITIAL_FORM_COUNT)
manform.data[prefixed_name] = formset.total_form_count()

关于python - 基于 POST 中的数据的 Django 表单集中的初始表单数量增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9413479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com