Nun*_*147 12 python django django-forms
我有一个django表单,在我的视图函数中我这样做:
search_packages_form = SearchPackagesForm( data = request.POST )
Run Code Online (Sandbox Code Playgroud)
我想覆盖一个名为price的表单字段,该表单字段已被删除:
price = forms.ChoiceField( choices = PRICE_CHOICES, required = False,widget = forms.RadioSelect )
Run Code Online (Sandbox Code Playgroud)
我想在调用之前覆盖表单字段 search_packages_form.is_valid()
我想到了:
search_packages_form.data['price'] = NEW_PRICE
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有任何想法吗 ?
可能不是 Django 方式,而是基于/sf/answers/1211304531/我猜想在验证之前更改表单值的最简单方法是执行以下操作:
def search_packages_view(request):
if request.method == 'POST'
updated_request = request.POST.copy()
updated_request.update({'price': NEW_PRICE})
search_packages_form = SearchPackagesForm(updated_request)
if search_packages_form.is_valid():
# You're all good
Run Code Online (Sandbox Code Playgroud)
这有效,但如果有人有另一种看起来更符合 Django 的方式,或者如果没有:然后解释原因,我会很感兴趣。
form.is_valid()运行您的表单(以及模型的情况下ModelForm)clean方法,返回True或False
如果您计划更改表单数据,您可以在通用清理方法或字段级别执行此操作,例如
class YourForm(DerivingClass):
# regular stuff
def clean_<ATTR>(self):
# here
return self.cleaned_data
def clean(self):
# or here
return super(YourForm, self).clean()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6029 次 |
| 最近记录: |