python – Django obj_create在我的表单验证之前运行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django obj_create在我的表单验证之前运行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1344字,纯文字阅读大概需要2分钟。
内容图文
![python – Django obj_create在我的表单验证之前运行](/upload/InfoBanner/zyjiaocheng/724/d3e61c99c80d45caad0fcd97904d1855.jpg)
在TastyPie中,obj_create在我的表单验证之前运行,它似乎被跳过,为什么?
我的代码
class AccountCreateResource(ModelResource):
class Meta:
queryset = CompanyUser.objects.all()
resource_name = 'accounts/create'
allowed_methods = ['post']
validation = FormValidation(form_class=UserCreationForm)
def obj_create(self, bundle, request=None, **kwargs):
CompanyUser.objects.create_user(email=bundle.data['email'],
company=bundle.data['company'],
password=bundle.data['company'])
解决方法:
你正在做obj_create压倒错误. obj_create还应该处理数据验证.如果查看源代码here,您将看到调用self.save(bundle)方法.除其他外,该方法调用运行验证器的is_valid方法.在您的情况下,obj_create方法可能如下所示:
def obj_create(self, bundle, **kwargs):
bundle.obj = CompanyUser()
bundle = self.full_hydrate(bundle)
bundle.obj.password = bundle.data['company']
return self.save(bundle)
请注意,由于您的资源是ModelResource,full_hydrate将为您在bundle.obj上设置必要的属性.重要的是调用self.save(bundle)并返回它的结果.
如果你真的想使用CompanyUser.objects.create_user(),请试试这个:
def obj_create(self, bundle, request=None, **kwargs):
bundle.obj = CompanyUser.objects.create_user(email=bundle.data['email'],
company=bundle.data['company'],
password=bundle.data['company'])
self.is_valid(bundle)
if bundle.errors:
raise ImmediateHttpResponse(response=self.error_response(bundle.request, bundle.errors))
return bundle
内容总结
以上是互联网集市为您收集整理的python – Django obj_create在我的表单验证之前运行全部内容,希望文章能够帮你解决python – Django obj_create在我的表单验证之前运行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。