class Meta: model = GallerySubCat exclude = () widgets = { 'title': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter title' }), 'gallery_topic': widgets.Select(attrs={ 'class': 'form-control', }), 'sub_category_images': forms.FileInput(attrs={'class': 'form-control'}) }
class upClientForm(forms.Form): name = forms.CharField(label='客户端名称', initial='Android SDK', max_length=50, error_messages={'required': '名称不能为空'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': 'Android SDK'})) description = forms.CharField(label='描述信息', max_length=100, error_messages={'required': 'aaaaaa', }, widget=widgets.TextInput( attrs={'class': 'form-control', 'placeholder': '修复 XXX BUG'})) mark = forms.CharField(label='企业标识', initial='comm', max_length=10, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': 'comm'})) version = forms.CharField(label='版本号', max_length=20, validators=[version_validate, ], widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': '1.5.1'})) force_verison = forms.CharField(label='强制升级版本号', initial='1.2.1', max_length=20, validators=[version_validate, ], widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': '1.0.1'})) device_type = forms.ChoiceField(label='客户端类型', choices=(('mobile-android', 'android sdk'), ('pc-win', 'windows'), ('pc-osx', 'max'), ('mobie-ios', 'ios sdk'), ('pc-linux-mips64-deepin', '国产深度'), ('pc-linux-arm64-neokylin', '中标麒麟'), ('pc-linux-arm64-zkfd', '中科方德'), ('mobile-yuanxin', '元心'), ('pc-linux-arm64-kylin', '银河麒麟'), ('pc-linux-x86_64-ubuntu', 'ubuntu'), ), widget=widgets.Select(attrs={'class': 'form-control', 'placeholder': '1.0.1'})) # package = fields.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True})) # 多个文件 files = forms.FileField(label='客户端文件', validators=[app_validate, ], )
class Meta: model = models.files fields = ['name', 'file_type', 'file'] widgets = { 'name': widgets.TextInput(attrs={ 'class': 'form-control', 'placeholder': '文件名称' }), 'file_type': widgets.Select(attrs={ 'class': 'form-control', 'placeholder': '文件类型' }), 'file': widgets.FileInput(), }
class Meta: model = models.Question #帮Question里面所有字段都可以拿到 fields = "__all__" #拿到个人的字段 但如果是 "__all__" 就表示所有的字段 error_messages = {"caption": {"required0": "名称不能为空"}} widgets = { "caption": widgets.Textarea( attrs={ "class": "form-control", "style": "resize:none; width:500px; height:40px;" }), "tp": widgets.Select(attrs={ "class": "form-control", "id": "select_change" }) }
class Meta: model = TourPackages exclude = () widgets = { 'tour': widgets.Select(attrs={'class': 'form-control'}), 'title': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter title' }), 'package_images': forms.FileInput(attrs={'class': 'form-control'}), 'description': forms.Textarea(attrs={'class': 'form-control'}) }
class myForm(forms.Form): user = forms.CharField(min_length=6) #前端form的name必须和属性名一致 email = forms.EmailField(error_messages={'requird':"空错误", 'invalid':"格式错误", 'min_length':"长度限制错误"}) #自定义错误信息, key值Django内部定义 favor = forms.ChoiceField(choices=[(1, "value1"), (2, "value2")]) #下拉框 sport = forms.MultipleChoiceField() #多选框 sex = fields.IntegerField(widget=widgets.Select(attrs={"class", "c"})) #使用widgets复合类型和属性 sex2 = modelforms.ModelChoiceField(queryset=models.Article.objects.all()) #和sex效果一样且自动更新 def __init__(self, *args, **kwargs): super(myForm, self).__init__(*args, **kwargs) self.fields['sex'].widget.choices = models.Algbor.objects.all().values_list('id','caption') #动态获取数据库数据, 否则只会在程序启动时获取一次 def clean(self): #钩子函数(raise异常) pass def _post_clean(self): #钩子函数 pass
class Meta: model = PackageImages exclude = () widgets = { 'package': widgets.Select(attrs={'class': 'form-control'}), 'title': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter title', }), 'package_images': forms.FileInput(attrs={ 'class': 'form-control', }) }
class AutoReviewRuleFilter(filters.FilterSet): status = filters.RelatedFilter( TestInstanceStatusFilter, field_name="status", queryset=models.TestInstanceStatus.objects.all(), ) pass_fail = filters.Filter( field_name="pass_fail", widget=widgets.Select(choices=[('', 'Any')] + list(models.PASS_FAIL_CHOICES)), ) class Meta: model = models.AutoReviewRule fields = ['status', 'pass_fail']
class DynamicForm(forms.Form): # 因為屬性是靜態字段,所以在程序啟動時就會給一塊內存去加載,除非重啟,否則不會動態更改 username = fields.IntegerField( # widget=widgets.Select(choices=[(0, 'jamie'), (1, 'joker'), (2, 'jj'), ]) # widget=widgets.Select(choices=models.UserInfo.objects.values_list('id', 'username')) widget=widgets.Select(), ) age = fields.IntegerField( initial=18, min_value=1, ) def __init__(self, *args, **kwargs): # super一定要寫在上面,用來拷貝所有的靜態字段複製給self.fields super(DynamicForm, self).__init__(*args, **kwargs) # 每次調用obj時就會執行一次init,所以在此更新choices,實現動態更新 self.fields["username"].widget.choices = models.UserInfo.objects.all( ).values_list("id", "username")
class Meta: model = User fields = [ 'username', 'DPI', 'Photo', 'Name1', 'Name2', 'Name3', 'LastName1', 'LastName2', 'BirthDate', 'Email', 'Phone', 'FKLicenceType', ] labels = { 'username': '******', 'DPI': 'DPI', 'Photo': 'Photo', 'Name1': 'Name1', 'Name2': 'Name2', 'Name3': 'Name3', 'LastName1': 'LastName', 'LastName2': 'LastName2', 'BirthDate': 'BirthDate', 'Email': 'Email', 'Phone': 'Phone', 'FKLicenceType': 'FKLicenceType', } years = [x for x in range(1980, 2019)] widgets = { 'username': widgets.TextInput(attrs={'class': ''}), 'DPI': widgets.TextInput(), 'Photo': widgets.FileInput(), 'Name1': widgets.TextInput(attrs={'class': ''}), 'Name2': widgets.TextInput(attrs={'class': ''}), 'Name3': widgets.TextInput(attrs={'class': ''}), 'LastName1': widgets.TextInput(attrs={'class': ''}), 'LastName2': widgets.TextInput(attrs={'class': ''}), 'Email': widgets.TextInput(attrs={'class': ''}), 'Phone': widgets.TextInput(attrs={'class': ''}), 'BirthDate': widgets.SelectDateWidget(attrs={'class': ''}, years=years), 'FKLicenceType ': widgets.Select(attrs={'class': ''}), }
class Meta: model = models.SiteInvite exclude = ["code", "user", "times_used", "invitees"] widgets = { "expiry": ExpiryWidget( choices=[ ("day", _("One Day")), ("week", _("One Week")), ("month", _("One Month")), ("forever", _("Does Not Expire")), ] ), "use_limit": widgets.Select( choices=[(i, _(f"{i} uses")) for i in [1, 5, 10, 25, 50, 100]] + [(None, _("Unlimited"))] ), }
class Meta: model = Tours exclude = () widgets = { 'title': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter title' }), 'tour_topic': widgets.Select(attrs={ 'class': 'form-control', }), 'tour_images': forms.FileInput(attrs={'class': 'form-control'}) }
class Meta: model = Properties exclude = ['id'] widgets = { 'streetName': widgets.TextInput(attrs={ 'class': 'form-control'}), 'price': widgets.NumberInput(attrs={ 'class': 'form-control'}), 'propValue': widgets.NumberInput(attrs={ 'class': 'form-control'}), 'fireInsurance': widgets.NumberInput(attrs={ 'class': 'form-control'}), 'squareMeter': widgets.NumberInput(attrs={ 'class': 'form-control'}), 'rooms': widgets.NumberInput(attrs={ 'class': 'form-control'}), 'type': widgets.TextInput(attrs={ 'class': 'form-control'}), 'description': widgets.Textarea(attrs={ 'class': 'form-control'}), 'shortDescription': widgets.Textarea(attrs={ 'class': 'form-control'}), 'realtor': widgets.Select(attrs={ 'class': 'form-control'}), } labels = { 'streetName': _('Götuheiti'), 'price': _('Verð'), 'propValue': _('Fasteignamat'), 'fireInsurance': _('Brunabótamat'), 'squareMeter': _('Fermetrar'), 'rooms': _('Herbergi'), 'type': _('Tegund'), 'description': _('Lýsing'), 'shortDescription': _('Stutt lýsing'), 'realtor': _('Fasteignasali'), } fields = [ 'streetName', 'price', 'propValue', 'fireInsurance', 'squareMeter', 'rooms', 'type', 'zone', 'zip', 'description', 'shortDescription', 'realtor', 'image' ]
class Meta: model = Buyer exclude = ['id', 'credit_card'] widgets = { 'buyer_name': widgets.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Type in your full name.' }), 'address': widgets.TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Type in your current streetname.' }), 'city': widgets.TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Type in your current city.' }), 'country': widgets.Select( attrs={ 'class': 'form-control', 'placeholder': 'Type in your current country of living.' }), 'postal_code': widgets.TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Type in your current postal code.' }), 'ssc': widgets.TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Type in your social security number.' }), 'email': widgets.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Type in your email.' }), }
class LoginForm(forms.Form): COLORS = [['红', '红'], ['蓝', '蓝'], ['紫', '紫']] username = forms.CharField(label='用户名', min_length=2, max_length=20, error_messages={ 'min_length': '用户名最少可以设置2位', 'max_length': '用户名最长可以设置20位' }, widget=widgets.TextInput(attrs={ 'class': 'form-control', 'placeholder': '用户名' })) user_color = forms.ChoiceField( label='幸运颜色', choices=COLORS, widget=widgets.Select(attrs={'class': 'form-control'}))
class NewsForm(forms.ModelForm): title = fields.CharField(widget=widgets.TextInput(attrs={ "class": "form-control", "placeholder": "在此输入标题" })) choices = ( (1, 'Everyone'), (2, 'Teachers'), (3, 'Students'), ) watchers = fields.CharField( widget=widgets.Select(choices=choices), label="可见对象", ) class Meta: model = News fields = ["title", "content", "watchers"]
class Meta: model = models.Question fields = "__all__" error_messages = { "caption": { "required": "名称不能为空" }, } widgets = { "caption": wid.Textarea(attrs={ "class": "form-control", "rows": "2", "cols": "60" }), "ct": wid.Select(attrs={"class": "form-control"}) }
class Meta: model = models.Book fields = "__all__" # fields = ['name','sex','age','phone'] # exclude = ['username',] # error_messages = { # "username": {'required':'用户名不能为空'} # } widgets = { "title":wid.TextInput(attrs={'class': "form-control" ,'placeholder': '书名'}), 'price':wid.NumberInput(attrs={'class': "form-control" ,'placeholder': '价格'}), 'date':wid.DateInput(attrs={'class': "form-control" ,'placeholder': '出版日期'}), 'publish':wid.Select(attrs={'class': "form-control" ,'placeholder': '出版社'}), 'authors':wid.SelectMultiple(attrs={'class': "form-control" ,'placeholder': '作者'}), } labels = { 'authors':'作者' }
class SimpleWrapperPlugin(BootstrapPluginBase): name = _("Simple Wrapper") parent_classes = ('BootstrapColumnPlugin',) alien_child_classes = True TAG_CHOICES = tuple((cls, cls.title()) for cls in ('div', 'span', 'section', 'article',)) glossary_fields = ( PartialFormField('element_tag', widgets.Select(choices=TAG_CHOICES), label=_("HTML element tag"), help_text=_('Choose a tag type for this HTML element.') ), ) @classmethod def get_identifier(cls, obj): identifier = super(SimpleWrapperPlugin, cls).get_identifier(obj) tag = obj.glossary.get('element_tag', cls.TAG_CHOICES[0][1]) return format_html('{0}{1}', identifier, tag.title())
class Meta: model = CheckoutInfo exclude = ['id'] widgets = { 'user': widgets.HiddenInput(attrs={'class': 'form-control'}, ), 'feeling_lucky': widgets.HiddenInput(attrs={'class': 'form-control'}, ), 'name': widgets.TextInput(attrs={'class': 'form-control'}, ), 'mobile': widgets.TextInput(attrs={'class': 'form-control'}, ), 'street_name': widgets.TextInput(attrs={'class': 'form-control'}, ), 'house_number': widgets.TextInput(attrs={'class': 'form-control'}, ), 'country': widgets.Select(attrs={'class': 'form-control'}, ), 'city': widgets.TextInput(attrs={'class': 'form-control'}, ), 'zipCode': widgets.TextInput(attrs={'class': 'form-control'}, ), 'social': widgets.TextInput(attrs={'class': 'form-control'}, ) }
class QuestionForm(Form): title = fields.CharField( error_messages={"required": "问题不能为空"}, widget=wd.Textarea(attrs={"style": "width:600px;height:50px"})) type = fields.ChoiceField( choices=((1, "单选"), (2, "打分(0-10分)"), (3, "建议")), widget=wd.Select(attrs={ "style": "width:200px;height:30px", "class": "type" })) option_ids = fields.ChoiceField(choices=[], widget=wd.RadioSelect()) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["option_ids"].choices = models.Option.objects.all( ).values_list("id", "title")
class DepartmentForm(Form): Name = fields.CharField(required=True, max_length=200, error_messages={ 'required': '姓名不能为空!!!', 'max_length': '名称过长!!!', }, widget=widgets.TextInput(attrs={ 'class': '', 'placeholder': 'Name', 'name': 'Name' })) choice = Company.objects.values_list('id', 'Name') Company_id = fields.CharField(widget=widgets.Select( choices=choice, attrs={ 'class': '', 'name': 'Company_id' }))
class MessageTemplateForm(forms.ModelForm): message_type = fields.CharField(widget=widgets.Select(choices=[])) class Meta: model = MessageTemplateModel fields = '__all__' def __init__(self, *args, **kwargs): super(MessageTemplateForm, self).__init__(*args, **kwargs) self.fields["message_type"].widget.choices = [('', '请选择')] try: dictionary = DataDictionaryModel.objects.get( code_main='message_type') self.fields[ "message_type"].widget.choices += DataDictionaryValueModel.objects.filter( dict_id=dictionary.id).values_list('value', 'title') except Exception: pass
class Meta: model = models.Question fields = ["title", 'type'] error_messages = {"title": {"required": "名称不能为空"}} widgets = { "title": wd.Textarea(attrs={ "class": "question_title", "style": "width:600px;height:40px" }), "type": wd.Select(attrs={ "class": "type", "style": "width:300px;height:30px" }) }
class QuestionsForm(Form): def __index__(self, *args, **kwargs): super(QuestionsForm, self).__init__(*args, **kwargs) self.fields['tp'].initial = [1] title = fields.CharField(label='标题:', max_length=64, required=True, error_messages={'required': '标题不能为空'}, widget=widgets.TextInput(attrs={ 'placeholder': '标题', 'class': 'form-inline' })) tp = fields.IntegerField(label='题目类型:', widget=widgets.Select( attrs={'class': 'form-inline types'}, choices=((1, '打分'), (2, '单选'), (3, '评价'))))
class Meta: model = Reviews exclude = ['id', 'user', 'product', 'datetime'] CHOICES = ( (1, '1 Star'), (2, '2 Stars'), (3, '3 Stars'), (4, '4 Stars'), (5, '5 Stars'), ) widgets = { 'rating': widgets.Select(attrs={'class': 'form-control'}, choices=CHOICES), 'reviewTitle': widgets.TextInput(attrs={'class': 'form-control'}), 'reviewText': widgets.TextInput(attrs={'class': 'form-control'}), }
def score_list(self, request, record_id): if request.method == "GET": from django.forms import Form, fields, widgets data = [] study_record_list = models.StudyRecord.objects.filter( course_record_id=record_id) for obj in study_record_list: TempForm = type( "TempForm", (Form, ), { "score_%s" % obj.pk: fields.ChoiceField( choices=models.StudyRecord.score_choices, widget=widgets.Select(attrs={ "class": "form-control", })), "homework_note_%s" % obj.pk: fields.ChoiceField(widget=widgets.TextInput( attrs={"class": "form-control"})) }) data.append({ 'obj': obj, 'form': TempForm( initial={ 'score_%s' % obj.pk: obj.score, 'homework_note_%s' % obj.pk: obj.homework_note }) }) return render(request, "score_list.html", {"data": data}) else: data_dict = {} for key, value in request.POST.items(): if key == "csrfmiddlewaretoken": continue name, nid = key.rsplit("_", 1) if nid in data_dict: data_dict[nid][name] = value else: data_dict[nid] = {name: value} for nid, update_dict in data_dict.items(): models.StudyRecord.objects.filter(id=nid).update(**update_dict) return redirect(request.path_info)
class FormStockes(dform.ModelForm): # 股权 stock_owner = fields.IntegerField( label='所有权人', label_suffix=":", widget=widgets.Select(attrs={'class': 'form-control'})) class Meta: model = models.Stockes fields = ['target', 'ratio', 'registe', 'share', 'stock_typ', 'remark'] widgets = { 'target': dform.TextInput(attrs={ 'class': 'form-control', 'placeholder': '目标企业' }), 'ratio': dform.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '占比' }), 'registe': dform.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '万元或万股' }), 'share': dform.NumberInput(attrs={ 'class': 'form-control', 'placeholder': '万元或万股' }), 'stock_typ': dform.Select(attrs={'class': 'form-control'}), 'remark': dform.TextInput(attrs={ 'class': 'form-control', 'placeholder': '备注' }), } def __init__(self, *args, **kwargs): super(FormStockes, self).__init__(*args, **kwargs) self.fields[ 'stock_owner'].widget.choices = models.Customes.objects.values_list( 'id', 'name').order_by('name')
class PersonnelForm(forms.Form): user_name = fields.CharField( max_length=16, required=True, strip=True, validators=[ RegexValidator(r'^[a-zA-Z\u4e00-\u9fa5]+$', '用户名不能有特殊字符或数字'), ], widget=widgets.TextInput(attrs={"placeholder": "用户名"})) email = fields.CharField( max_length=32, required=True, strip=True, validators=[ RegexValidator(r'^\d{5,12}@[Qq][Qq]\.(com|cn)$', '只能是QQ邮箱'), ], widget=widgets.TextInput(attrs={"placeholder": "邮箱"})) blog_title = fields.CharField( max_length=16, required=True, strip=True, widget=widgets.TextInput(attrs={"placeholder": "博客标题"})) blog_surfix = fields.CharField( max_length=32, required=True, strip=True, validators=[ RegexValidator(r'^[a-zA-Z]+$', '博客地址只能由英文组成'), ], widget=widgets.TextInput(attrs={"placeholder": "博客地址"})) theme = fields.CharField(widget=widgets.Select()) sammary = fields.CharField(max_length=64, required=False, strip=True, widget=widgets.Textarea(attrs={ 'cols': "110", 'rows': "6" })) # 动态获取数据库字段 def __init__(self, *args, **kwargs): super(PersonnelForm, self).__init__(*args, **kwargs) self.fields['theme'].widget.choices = models.Blog.objects.values_list( 'theme', 'theme')
class MenuForm(Form): caption = fields.CharField( required=True, error_messages={'required': '目录名不能为空'}, widget=widgets.TextInput(attrs={'class': 'form-control'})) url = fields.CharField( required=False, widget=widgets.TextInput(attrs={'class': 'form-control'})) parent_id = fields.ChoiceField(required=False, choices=[], widget=widgets.Select( attrs={'class': 'form-control'}, )) def __init__(self, *args, **kwargs): super(MenuForm, self).__init__(*args, **kwargs) self.fields['parent_id'].choices = models.Menu.objects.values_list( 'id', 'caption')