我认为这应该是一个相当直接的问题。 。 。我有两个不同的提交按钮的Django窗体。第一个提交按钮仅仅用于保存数据库,无论输入什么值到表单域(所以用户可以返回并在以后完成表单)。我想要单击第一个提交按钮时不需要表单域。但是,当用户点击第二个提交按钮时,所有字段都应该是必需的。有没有办法做到这一点?或者我只需要为每个提交按钮复制一次表单?Django窗体有两个提交按钮。 。 。一个需要字段,一个不需要
4
A
回答
4
上述工程的答案,但我更喜欢的是这样的:Changing required field in form based on condition in views (Django)
我有两个按钮:
<!-- simply saves the values - all fields aren't required unless the user is posting the venue -->
<input type="submit" name="mainForm" value="Save">
<!-- post the values and save them to the database - fields ARE required-->
<input type="submit" name="postVenue" value="Post Venue">
我让所有的表单域required=False
默认,然后有这样的我查看:
if 'postVenue' in request.POST:
form = NewVenueForm(request.POST)
required = 'postVenue' in request.POST
form.fields['title'].required = required
form.fields['category'].required = required
# do this for every form field
elif 'mainForm' in request.POST:
form = NewVenueForm(request.POST)
谢谢大家!
3
如果你手工编写的提交按钮的HTML,你可以添加一个name
和value
属性您的Django应用程序可以使用的:
<button name="action" value="save">Save</button>
<button name="action" value="submit">Submit</button>
当提交表单时,你就可以知道用户想要执行的动作。
class MyForm(forms.Form):
def __init__(self, data=None, *args, **kwargs):
super(MyForm, self).__init__(data=data, *args, **kwargs)
# store user's intended action in self.action
self.action = data.get('action') if data else None
# set form fields to be not required if user is trying to "save"
if self.action == 'save':
for field in self.fields:
field.required = False
相关问题
- 1. Django窗体:创建两个字段需要XOR?
- 2. 需要两个字段之一
- 3. 需要统一子窗体按钮点击成一个例程
- 4. django提交两个不同的表单提交一个按钮
- 5. 我需要用一个按钮按下
- 6. jQuery验证需要两个字段或一个其他字段
- 7. Django窗体需要更多字段
- 8. 一个窗体有两个按钮
- 9. 不需要有一个VAO?
- 10. 需要两个CLICS而不是一个
- 11. 需要一个交易
- 12. 一个字段上有两个hibernate验证器。需要选择只有一个
- 13. 需要点击一个按钮硒
- 14. 需要一个按钮在Android
- 15. 如何需要点击一个按钮
- 16. 我的按钮需要一个输入字段
- 17. 我需要能够按一个按钮发出一个报价
- 18. 如何限制回车键只有一个按钮在一个窗体中有两个提交按钮
- 19. 单个窗体上的多个按钮,但只有一个提交按钮?
- 20. Indy 10.6 IdContext需要一个ID字段
- 21. 需要在一个字段中搜索两个值Mysql
- 22. 两个字段表(都是int)是否需要一个索引?
- 23. 联系表格需要填写两个字段中的一个
- 24. 我需要一个“不要再显示”按钮
- 25. ASP.NET MVC一个窗体,两个按钮
- 26. 一个表单,两个提交按钮
- 27. 我需要删除一个提交到一个分支
- 28. Recaptcha - 只需要一个字
- 29. 只需要一个按钮,文件上传,但两个按钮显示
- 30. JOIN两个表(一个需要连接)
谢谢!但是我对表单的__init__函数不是很熟悉,当我使用这段代码的时候,我得到一个错误,说“name'data'没有被定义”在行上“self.action = data.get('action')if data否则无“? – laurenll
您需要在'__init__'方法签名中添加'data = None' –
@laurenll这个答案有帮助吗?让我知道如果您有任何问题或澄清,我会很乐意更新答案 –