如果我在视图中有以下代码......
enquiry = Enquiry(
name=request.POST['name'],
email=request.POST['email'],
enquiry_input=request.POST['enquiry_input'],
enquiry_type=request.POST['enquiry_type']
)
enquiry.full_clean()
enquiry.save()
有没有办法可以同时传递所有参数?我知道你可以在rails中做到这一点。例如Object.create(object_params)
是否有Django等价物?仅供参考我尚未在前端创建表单但我只是测试POST请求是否创建了一个查询对象......
答案 0 :(得分:1)
正确且最简单的方法是使用model forms。
class EnquiryForm(ModelForm):
class Meta:
model = Enquiry
fields = ['name', 'email', 'enquiry_input', 'enquiry_type']
您不必将其显示给用户,您只需将其用于validation and saving:
def my_view(request):
form = EnquiryForm(request.POST)
if form.is_valid():
form.save()
return # normally a redirect response here
else:
# react to incorrect data
# you may investigate form.errors
return # some error response
答案 1 :(得分:0)
您可以使用**
使用Python的kwargs扩展来执行此操作:
enquiry = Enquiry(**kwargs)
但不要。由于Rails引入strong_params的原因相同,这是不安全的。改为使用表格。