码迷,mamicode.com
首页 > 其他好文 > 详细

django 将view视图中的对象传入forms表单验证模块中

时间:2019-03-29 14:49:21      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:提示   ISE   模块   col   max   _id   return   form表单   elf   

最近在写一个用户详情表单验证模块时出现了一个问题。我想通过forms表单这个模块,实现前端的表格渲染,(如果有值带值渲染到表格中,如果没有值就渲染为空白),并且可以在提交表格后获得forms模块的表单校验功能。这里就出现一个问题了。。如果有值就带值渲染到页面,这个可以用js或jq来实现。很简单。但是,例如在定义model时有个别的字段是定义为唯一的unique,那么问题来了。如果将当前表再次提交的话,forms验证组件会反馈错误信息,提示该内容已存在了。那么这时候就需要引入一些条件将自己提交的排出(也就是说除自己以外的数据做比较)。

 

有了这个思路,就要解决如果将forms外部的对象引入到forms中作为field。感觉写这个问题的文章好少,都很麻烦,而且看了以后蒙圈,其实就是那么一回事。。

 

首先:要让forms可以接收参数。

在form.py中

class
PSUserForm(forms.Form): def __init__(self, *args, **kwargs): this_user = kwargs.pop(this_user, None) super(PSUserForm, self).__init__(*args, **kwargs) self.user = this_user
  telephone
= forms.CharField(max_length=11, error_messages={required: "该字段不能为空!"}, widget=widgets.TextInput(attrs={"class": "form-control"}), label=电话号码)      clean_telephone(self):   telephone = self.cleaned_data.get(telephone)   telephone_obj = UserDetail.objects.exclude(pk=self.user.userdetail_id).filter(telephone=telephone).first()    if not telephone_obj:    return telephone    else:   raise ValidationError(该电话已经被注册!)

其次:传入想要的对象

form = PSUserForm(request.POST, this_user=request.user)

很简单,本身forms验证组件需要传入表单内容进行验证(request.post中就是前端提交的form表单内容),只需要把额外的参数一同传给forms模块就可以了。是不是简单?

 

django 将view视图中的对象传入forms表单验证模块中

标签:提示   ISE   模块   col   max   _id   return   form表单   elf   

原文地址:https://www.cnblogs.com/sly27/p/10620945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!