据我所知,创建一个安全且需要额外相关字段的表单是一个很大的负担。
示例我是如何做到这一点的: 1.创建表单。
class Myform(ModelForm):
def __init__(self, *args, **kwargs):
relatedfieldinstance = kwargs.pop('relatedfield')
super(CustomActivityTypeForm, self).__init__(*args, **kwargs)
self.fields['relatedfield '].widget = forms.HiddenInput()
self.fields['relatedfield '].instance = relatedfieldinstance
THIS STILL ENABLES THE USER TO HIJACK YOUR POST!!!
2。创建视图:
form = MyForm(request.POST or None, instance=None, relatedfield =relatedfield )
if form.is_valid:
mynewinstance=form.save(commit=False)
mynewinstance.relatedfield = relatedfield
mynewinstance.save()
有没有更好的方法呢?因为很容易忘记在form.is_valid子句中再次设置它并认为它正在工作(它是!),从而造成巨大的安全漏洞。
我需要相关字段,因为它对我的模型验证是必要的(模型上的干净方法)。