def __init__(self, *args, **kwargs): errors = self.default_error_messages.copy() if "error_messages" in kwargs: errors.update(kwargs["error_messages"]) lat_field = fields.FloatField( error_messages={"invalid": errors["invalid_lat"]}, min_value=-90, max_value=90) lng_field = fields.FloatField( error_messages={"invalid": errors["invalid_lng"]}, min_value=-180, max_value=180) super(PointField, self).__init__((lat_field, lng_field), *args, **kwargs)
def __init__(self, required=False, widget=avmwidgets.FourItemFloatWidget(), label=None, initial=None, help_text=None, max_length=None): myfields = ( fields.FloatField(required=False), fields.FloatField(required=False), fields.FloatField(required=False), fields.FloatField(required=False), ) super(FourItemFloatField, self).__init__(myfields, required=required, widget=widget, label=label, initial=initial, help_text=help_text)
class OrderAddForm(forms.Form): product_id = fields.IntegerField( widget=widgets.Select(attrs={'class': 'form-control'}), error_messages={'required': '必须选择一个'}) cprice = fields.FloatField(error_messages={'required': '价格不能为空'}) number = fields.IntegerField(error_messages={'required': '数量不能为空'}) order_state = fields.ChoiceField(choices=((0, '待付款'), (1, '待服务'), (2, '服务中'), (3, '服务完成'))) name = fields.CharField(error_messages={'required': '姓名不能为空'}) phone = fields.IntegerField(error_messages={'required': '手机号码不能为空'}) payment = fields.ChoiceField(choices=((0, '支付宝'), (1, '微信'), (2, '线下支付'), (3, '网银支付')))
class SubmitForm(forms.Form): # 修改学生信息的表单 user_id = fields.CharField(label='用户名', widget=widgets.Select()) start_score = fields.FloatField( max_value=200, min_value=0, required=False, ) inclass_score1 = fields.FloatField( max_value=200, min_value=0, required=False, ) inclass_score2 = fields.FloatField( max_value=200, min_value=0, required=False, ) inclass_score3 = fields.FloatField( max_value=200, min_value=0, required=False, ) inclass_score4 = fields.FloatField( max_value=200, min_value=0, required=False, ) inclass_score5 = fields.FloatField( max_value=200, min_value=0, required=False, ) inclass_score6 = fields.FloatField( max_value=200, min_value=0, required=False, ) view_time = fields.FloatField( max_value=1000, min_value=0, required=False, ) def __init__(self, *args, **kwargs): super(SubmitForm, self).__init__(*args, **kwargs) self.fields[ 'user_id'].widget.choices = models.result_store.objects.values_list( 'userid', 'userid')
class dataForm(Form): driverName = fields.CharField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) date = fields.DateField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) location = fields.CharField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) plateNumber = fields.CharField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) project = fields.CharField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) quantity = fields.FloatField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={ 'required': "can't be null", 'invalid': 'must be number' }) receiveID = fields.CharField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) receiverName = fields.CharField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) category_id = fields.IntegerField() time = fields.TimeField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) unit = fields.CharField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) uploadTime = fields.DateTimeField( widget=widgets.TextInput(attrs={'class': 'form-control'}), error_messages={'required': "can't be null"}) def __init__(self, *args, **kwargs): # 自定义__init__ super(dataForm, self).__init__(*args, **kwargs) self.fields['category_id'].widget = widgets.Select( choices=material.objects.values_list('id', 'categoryName'), attrs={'class': 'form-control'})
def compress(self, data_list): if data_list: if data_list[2] in validators.EMPTY_VALUES: return None elif data_list[0] == "DBRef": cleaner = DBRefField() return cleaner.clean(data_list[1:3]) elif data_list[0] == "int": cleaner = fields.IntegerField() elif data_list[0] == "float": cleaner = fields.FloatField() elif data_list[0] == "unicode": cleaner = fields.CharField(max_length=10000) elif data_list[0] == "datetime": cleaner = fields.DateTimeField() else: raise ValidationError(self.error_messages['invalid_type']) return cleaner.clean(data_list[2]) return None
class stu_form(forms.Form): # stuno = fields.IntegerField(required=True, # error_messages={ # 'required':'请填写学号', # # },) stuname = fields.CharField( max_length=64, required=True, error_messages={ 'required': '请填写学员姓名', 'max_length': '学员姓名不可超过32个字' }, ) phone = fields.CharField( max_length=20, min_length=11, required=True, validators=[ phone_validate, ], error_messages={ 'required': '请填写手机号码', 'max_length': '手机号最长不可超过20位', 'min_length': '手机号至少11位' }, ) qq = fields.CharField( max_length=15, validators=[ qqNo_validate, ], error_messages={ 'required': '请填写QQ号', }, ) """coursId = ModelChoiceField( required=True, queryset=models.Courses.objects.all(), empty_label="-------", error_messages={ 'required': '请选择科目!', }, )""" coursId = fields.IntegerField(widget=forms.Select( attrs={ 'class': 'select', 'id': 'coursID', 'onChange': 'getClasOption(this.value)' }, choices=COURSES_LIST, ), ) clsId = fields.IntegerField( required=False, widget=forms.Select(choices=(('', '-----'), ), ), ) # clsId = ModelChoiceField( # required=True, # #queryset=models.Clas.objects.all(), # queryset=models.Clas.objects.filter(couId=coursId), # empty_label="-------", # error_messages={ # 'required': '请选择班级!', # }, # ) clstype = fields.IntegerField(widget=forms.Select(choices=( (1, "现场"), (2, "网络"), ), )) tu_total = fields.FloatField(min_value=0.0, required=True, validators=[ digit_validate, ], error_messages={ 'min_value': '请输入正数', 'required': '请填写学费总额' }) tu_paid = fields.FloatField(min_value=0.0, required=True, validators=[ digit_validate, ], error_messages={ 'min_value': '请输入正数', 'required': '请填写已交学费' }) is_recom = fields.IntegerField(widget=forms.Select(choices=( (1, "是"), (2, "否"), ), )) #recom = fields.IntegerField(widget=forms.Select()) '''recom = ModelChoiceField( queryset=models.Stu.objects.all(), empty_label="-------" )''' recom = fields.CharField(required=False, max_length=64) def __init__(self, *args, **kwargs): super(stu_form, self).__init__(*args, **kwargs) #self.fields['clsId'].widget.choices = models.Clas.objects.all().values_list('id',"clsName") #self.fields['recom'].widget.choices = models.Stu.objects.all().values_list('id',"name") # def clean_stuno(self): # sno = self.cleaned_data['stuno'] # if sno: # st = models.Stu.objects.filter(Sno=sno) # if st: # raise ValidationError('输入学号已存在,请重新输入!') # else: # return sno def clean_coursId(self): coursId = self.cleaned_data['coursId'] print("coursID> ", coursId) c = models.Courses.objects.get(id=coursId) if not c: raise ValidationError('请选择所学科目!!!!') else: print("form course: ", c) return c def clean_clsId(self): clsId = self.cleaned_data['clsId'] cls = models.Clas.objects.filter(id=clsId).first() if not cls: raise ValidationError('请选择班级!!!!') else: print("form cls: ", type(cls)) return cls def clean_recom(self): is_recom = self.cleaned_data['is_recom'] rec = self.cleaned_data['recom'] s = models.Stu.objects.filter(name=rec).first() if is_recom == 1: if not rec: #print("未输入推荐人") raise ValidationError('请选择推荐人!') else: if not s: #print("-----打印错误-----") raise ValidationError('该学员不存在') else: print("form rec:", rec, type(rec)) print("from s:", s, type(s)) return s else: if rec: raise ValidationError('不需要填写推荐人') else: return s
class GoodForm(Form): good_pic = fields.ImageField(label="商品图片", required=False, widget=widgets.FileInput()) good_name = fields.CharField( label="名称", required=True, max_length=10, widget=widgets.TextInput(attrs={"class": "form-control"}), error_messages={ 'required': '商品名称不能为空', 'max_length': '商品名称长度不能超过10', }) price = fields.FloatField( label="单价", required=True, widget=widgets.NumberInput(attrs={"class": "form-control"}), ) discount = fields.FloatField( label="折扣", required=False, widget=widgets.NumberInput(attrs={"class": "form-control"}), ) good_num = fields.IntegerField( label="库存", required=True, widget=widgets.NumberInput(attrs={"class": "form-control"}), ) remark = fields.CharField( label="备注", required=False, widget=widgets.Textarea(attrs={"class": "form-control"})) good_type = fields.ChoiceField( # choices=GoodType.objects.filter(store_id=1, goodtype_status=1).values_list("goodtype_id", "goodtype_name"), label="商品类型", initial=1, widget=widgets.Select(attrs={ "class": "form-control", "style": "width:150px;display:inline" })) def __init__(self, *args, **kwargs): super(GoodForm, self).__init__(*args, **kwargs) # 调用父类的__init__ self.fields['good_type'].choices = GoodType.objects.filter( store_id=1, goodtype_status=1).values_list("goodtype_id", "goodtype_name") def set_store_id(self, store_id): self.store_id = store_id def clean_discount(self): val = self.cleaned_data.get("discount") if val: if 1 >= val > 0: return val else: raise ValidationError("优惠打折须在0-1之间") else: return val def clean_price(self): val = self.cleaned_data.get("price") if 0 <= val <= 9999: return val else: raise ValidationError("商品价格须在0-999之间") def clean_good_name(self): val = self.cleaned_data.get("good_name") store_id = self.store_id ret = Goods.objects.filter(good_name=val, good_store_id=store_id) if not ret: return val else: raise ValidationError("本店已存在同名商品") def set_value( self, good_type_id, good_name, price, discount, good_num, remark, ): self.initial['good_type'] = good_type_id self.fields['good_name'].widget.attrs.update( {'value': good_name if good_name is not None else ""}) self.fields['price'].widget.attrs.update( {'value': price if price is not None else ""}) self.fields['discount'].widget.attrs.update( {'value': discount if discount is not None else ""}) self.fields['good_num'].widget.attrs.update( {'value': good_num if good_num is not None else ""}) self.initial['remark'] = remark
class ArticlesSignForm(dform.Form): # 项目签批 SIGN_TYPE_LIST = models.Articles.SIGN_TYPE_LIST sign_type = fields.IntegerField(label='签批结论', label_suffix=":", initial=1, widget=widgets.Select( choices=SIGN_TYPE_LIST, attrs={'class': 'form-control'})) renewal = fields.FloatField( label='本次续贷', label_suffix=":", widget=widgets.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '本次续贷额度(元)' })) augment = fields.FloatField( label='本次新增', label_suffix=":", widget=widgets.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '本次新增额度(元)' })) credit_amount = fields.FloatField( label='客户授信总额', label_suffix=":", widget=widgets.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '客户授信总额(元)' })) g_value = fields.FloatField( label='反担保价值', label_suffix=":", widget=widgets.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '反担保价值(元)' })) rcd_opinion = fields.CharField( label='风控部意见', label_suffix=":", widget=widgets.Textarea(attrs={ 'class': 'form-control', 'rows': '1', 'placeholder': '风控部意见' })) convenor_opinion = fields.CharField( label='招集人意见', label_suffix=":", widget=widgets.Textarea(attrs={ 'class': 'form-control', 'rows': '1', 'placeholder': '招集人意见' })) sign_detail = fields.CharField( label='签批人意见', label_suffix=":", widget=widgets.Textarea(attrs={ 'class': 'form-control', 'rows': '2', 'placeholder': '签批详情' })) sign_date = fields.DateField(label='签批日期', label_suffix=":", initial=str(datetime.date.today()), widget=widgets.DateInput(attrs={ 'class': 'form-control', 'type': 'date' }))
class ArticlesAddForm(dform.Form): # 项目添加 custom_id = fields.IntegerField( label='客户名称', label_suffix=":", widget=widgets.Select(attrs={'class': 'form-control'})) product_id = fields.IntegerField( label='业务品种', label_suffix=":", widget=widgets.Select(attrs={'class': 'form-control'})) renewal = fields.FloatField( label='续贷金额(元)', label_suffix=":", widget=widgets.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '输入续贷金额' })) augment = fields.FloatField( label='新增金额(元)', label_suffix=":", widget=widgets.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '输入新增金额' })) credit_term = fields.IntegerField( label='授信期限(月)', label_suffix=":", initial=12, widget=widgets.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '输入授信期限(月)' })) process_id = fields.IntegerField( label="审批流程", label_suffix=":", widget=widgets.Select(attrs={'class': 'form-control'})) director_id = fields.IntegerField( label="项目经理", label_suffix=":", widget=widgets.Select(attrs={'class': 'form-control'})) assistant_id = fields.IntegerField( label="项目助理", label_suffix=":", widget=widgets.Select(attrs={'class': 'form-control'})) control_id = fields.IntegerField( label="风控专员", label_suffix=":", widget=widgets.Select(attrs={'class': 'form-control'})) def __init__(self, *args, **kwargs): super(ArticlesAddForm, self).__init__(*args, **kwargs) self.fields[ 'custom_id'].widget.choices = models.Customes.objects.values_list( 'id', 'name') self.fields[ 'product_id'].widget.choices = models.Product.objects.values_list( 'id', 'name') self.fields[ 'process_id'].widget.choices = models.Process.objects.values_list( 'id', 'name') self.fields[ 'director_id'].widget.choices = models.Employees.objects.filter( job__name='项目经理', employee_status=1).values_list('id', 'name') self.fields[ 'assistant_id'].widget.choices = models.Employees.objects.filter( job__name='项目经理', employee_status=1).values_list('id', 'name') self.fields[ 'control_id'].widget.choices = models.Employees.objects.filter( job__name='风控专员', employee_status=1).values_list('id', 'name')
class UserForm(Form): username = fields.CharField( required=True, max_length=200, error_messages={ 'required': '用户名不能为空!!!', 'max_length': '用户名过长!!!', }, widget=widgets.TextInput(attrs={ 'class': '', 'placeholder': 'username', 'name': 'username' })) email = fields.EmailField( required=True, max_length=100, error_messages={ 'required': '邮箱不能为空!!!', 'invalid': '邮箱格式错误!!!' }, widget=widgets.TextInput(attrs={ 'class': '', 'placeholder': 'email', 'name': 'email' })) Phone_Number = fields.CharField( required=True, max_length=11, error_messages={ 'required': '手机号码不能为空!!!', 'max_length': '手机号码过长!!!', }, widget=widgets.TextInput(attrs={ 'class': '', 'placeholder': 'Phone_Number', 'name': 'Phone_Number' })) Job_Number = fields.CharField( required=True, max_length=10, error_messages={ 'required': '工号不能为空!!!', 'max_length': '工号过长!!!', }, widget=widgets.TextInput(attrs={ 'class': '', 'placeholder': 'Job_Number', 'name': 'Job_Number' })) Ui_Color = fields.CharField( required=True, max_length=20, error_messages={ 'required': '界面颜色不能为空!!!', 'max_length': '界面颜色过长!!!', }, widget=widgets.TextInput(attrs={ 'class': '', 'placeholder': 'Ui_Color', 'name': 'Ui_Color' })) Ui_Zoom = fields.FloatField( required=True, error_messages={ 'required': '界面缩放系数不能为空!!!', 'invalid': '格式错误!!!' }, widget=widgets.TextInput(attrs={ 'class': '', 'placeholder': 'Ui_Zoom', 'name': 'Ui_Zoom' })) Design_Rate = fields.FloatField( required=True, error_messages={ 'required': '设计系数不能为空!!!', 'invalid': '格式错误!!!' }, widget=widgets.TextInput(attrs={ 'class': '', 'placeholder': 'Design_Rate', 'name': 'Design_Rate' })) def clean_Phone_Number(self): # 对Phone_Number的扩展验证 Phone_Number = self.cleaned_data.get('Phone_Number') m = re.findall(r"1\d{10}", Phone_Number) if not m: raise ValidationError('号码格式不正确!') return Phone_Number
class FilterStudentsByMarks(forms.Form): avg_mark = fields.FloatField(min_value=1, max_value=12)