Django动态表单字段生成

扎戈罗德尼·奥莱西(Zagorodniy Olexiy)

我想用“房间”字段创建表单,它是整数字段。根据房间的数量,我想为每个房间“ extra_adult”和“ extra_children”生成另外两个字段。根据孩子的数量,我想生成“ children_age”字段。

我是Python和Django的新手,我曾尝试在DYNAMIC FORM GENERATION帖子上做类似的文章,在这里遇到了几个问题:

1)我global name 'rooms' is not defined在forms.py中有一个错误

2)应该怎么到cleaned_dataextra_adultextra_childrenextra_children_age字段;

3)根据孩子的数量如何添加extra_children_age字段。

这是我的form.py

class RoomsForm(forms.Form):
        rooms = forms.IntegerField(label=(min_value=1 )

        def __init__(self, *args, **kwargs):
                extra_adult = kwargs.pop('extra_adult', 0)
                extra_children = kwargs.pop('extra_children', 0)
                super(HotelForm, self).__init__(*args, **kwargs)
                for room in rooms:
                        self.fields['adult_%s' % room] = forms.IntegerField(min_value=1 )
                        self.fields['children_%s' % room] = forms.IntegerField(label=(required=False )

views.py

def bookingForm(request):
        if request.method == 'POST':
                form = HotelForm(request.POST, extra_a=request.POST.get('extra_adult'), extra_c=request.POST.get('extra_children'))
                if form.is_valid():
                        rooms = form.cleaned_data['rooms']
                        print "form is valid"
        else:
                form = HotelForm()

        return render(request, 'booking/booking.html', { 'form': form })

感谢您的帮助。

Shang Wang

您的代码需要大量改进,我无法为您编写全部内容,但是显然有些地方似乎是错误的:

  1. 您的表单字段定义似乎很奇怪:rooms = forms.IntegerField(label=(min_value=1 ),请看一些修复它的示例。

  2. 您的第一个错误是因为没有rooms在构造函数中定义变量。同样,您不能仅仅从这样的字段中获取价值rooms,所有表单字段都同时填写和提交,因此字段之间无法相互引用。您可能需要单独的表格才能获取房间信息。

  3. 您尝试这样做kwargs.pop(),但是您以错误的方式向表单提供了额外的数据。要使其正常工作,您应该执行以下操作:

form = HotelForm(request.POST, extra_adult=1, extra_children=2)

您看到的示例有点误导性,不应为这些参数提供request.POST.get数据,而应为其他参数提供数据,这就是为什么我建议您以其他形式提供房间信息的原因。一旦有了,将结果输入第二种形式就容易得多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为动态生成的表单字段实现表单验证

来自分类Dev

将表单字段动态添加到Django表单

来自分类Dev

Javascript动态表单字段

来自分类Dev

如何订购在Django中动态创建的模型表单字段

来自分类Dev

Django通用视图中的动态表单字段

来自分类Dev

如何自定义 django 表单字段生成的 html

来自分类Dev

AngularJS动态表单字段验证

来自分类Dev

如何动态添加或删除表单字段?

来自分类Dev

在MeteorJS中动态添加表单字段

来自分类Dev

动态表单字段不进入行

来自分类Dev

从表单字段动态填充URL

来自分类Dev

动态表单字段不发送值

来自分类Dev

在 Laravel 中动态保存表单字段

来自分类Dev

如何动态获取表单字段值?

来自分类Dev

JS-将两个表单字段相乘的函数(带有动态生成的div)

来自分类Dev

在动态生成的 PDF 的多行表单字段中将文本与顶部对齐

来自分类Dev

从表单字段Javascript生成链接

来自分类Dev

关于Django模板中表单字段值的动态隐藏/取消隐藏选项卡

来自分类Dev

隐藏Django表单字段的None值

来自分类Dev

Django:For循环迭代表单字段

来自分类Dev

如何设置表单字段值-Django

来自分类Dev

Django表单字段更改为必填

来自分类Dev

Django表单字段验证失败

来自分类Dev

提交后的django清除表单字段

来自分类Dev

使用表单字段更新Django模型

来自分类Dev

Django表单字段将不会显示

来自分类Dev

自定义Django表单字段

来自分类Dev

Django更改表单字段错误消息

来自分类Dev

django模型表单字段=()行为