• 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'})
    

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

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

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

  • 相关阅读:
    Netsharp快速入门(之17) Netsharp基础功能(参照高级设置)
    Netsharp快速入门(之16) Netsharp基础功能(权限管理)
    安装 SQL SERVER PROFILER
    运用 DataContractSerializer 存储本地对象
    坑人的 try catch finally
    截图库
    Asp.Net MVC 过滤器
    Application、Session、Cookie、ViewState的特性
    Ioc 比较
    Redis 安装与配置
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/13406738.html
Copyright © 2020-2023  润新知