zoukankan      html  css  js  c++  java
  • django学习第十五天-modelform的补充

    基于form组件和modelform组件改造图书管理系统

    modelform的补充

          class BookModelForm(forms.ModleForm):
                #书籍的名称没有最小长度的校验,那么我们就可以自己自定义在下面这么写,那么它就会替换modelform帮我们自动生成的form属性
                title = forms.CharField(max_length=64,min_length=2)
          
                class Mate:  #配置元信息
                      model = models.Book   #用于指定模型类
                      fields = '__all__'    #指定Book模型类中的所有属性
                      #fields=['title','price']#如果指定了model模型类中的属性,那么modeform就只会根据给出的属性生成form属性和对应的标签
                      #exclude=['title','price'] #排除给出指定model模型类中的属性,也就是会生成剩下属性对应的form属性
                       '''
                        modelform会自动将这些属性转换为跟上面BookForm类中定义的属性一样
                        Book类里面的 pub = models.ForeignKey('Publish'),authors = models.ManyToManyField('Author')
                        会自动翻译成如下
                        pub = forms.ModelChoiceField(
                              label='出版社',
                        queryset=models.Publish.objects.all(),
                        )
                        authors = forms.ModelMultipleChoiceField(
                            label='作者',
                            queryset=models.Author.objects.all()
                        )
                        '''
                      labels={'title':'书籍名称',...} #指定label标签内容  #labels如果不想写的话可以在model模型类中定义verbose_name='书籍名称'
                      error_messages={'title':{'required':'不能为空',...},...} #错误提示信息
                      widgets={'pub_date':forms.TextInput(attrs={'type':'date',...},...),...} #修改插件标签样式
                #想在自己定义的forms类在初始化的时候统一加一些样式
                def __init__(self, *args, **kwargs):
                        super().__init__(*args, **kwargs)
    
                        for name, field in self.fields.items():
                            # print(name, field)
                            field.widget.attrs.update({'class': 'form-control'})
    

    -------------------------------------------

    个性签名:代码过万,键盘敲烂!!!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    【转】商业内幕(Business Insider)网站近期评出了全美20家最具创新力的科技创业公司
    【转】SQL Server如何截断(Truncate)和收缩(Shrink)事务日志
    【转】xp_dirtree储存过程漏洞
    【转】锻炼胸肌
    【转】sql server 版本中r2解释
    【转】生活感悟
    jquery插件学习之元素顶部悬浮
    html5学习
    javascript 学习之自定义滚动条加滚轮事件
    PHP连接数据库的方法
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/13406738.html
Copyright © 2011-2022 走看看