zoukankan      html  css  js  c++  java
  • Django之forms.ModelForm

    通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单。 举个例子,你也许会有个Book 模型,并且你还想创建一个form表单用来添加和编辑书籍信息到这个模型中。 在这种情况下,在form表单中定义字段将是冗余的,因为我们已经在模型中定义了那些字段。

     

      基于这个原因,Django 提供一个辅助类来让我们可以从Django 的模型创建Form,这就是ModelForm

     

    modelForm定义

        formmodel的终极结合,会根据你model中的字段转换成对应的form字段,并且并你生成标签等操作。

     

        models中的表是下面的内容:

    class Book(models.Model):

        nid = models.AutoField(primary_key=True)

        title = models.CharField( max_length=32)

        publishDate=models.DateField()

        price=models.DecimalField(max_digits=5,decimal_places=2)

        publish=models.ForeignKey(to="Publish",to_field="nid")

        authors=models.ManyToManyField(to='Author',)

        def __str__(self):

            return self.title

     

    modelform类的写法:

    class BookForm(forms.ModelForm):

        class Meta:

            model = models.Book

            fields = "__all__"

            labels = {

                "title": "书名",

                "price": "价格"

            }

            widgets = {

                "password": forms.PasswordInput(attrs={"class": "c1"}),

     

                "publishDate": forms.DateInput(attrs={"type": "date"}),

            }

    class Meta下常用参数:

    model = models.Book  # 对应的Model中的类

    fields =[]#指定字段

    fields = "__all__"  # 字段,如果是__all__,就是表示列出所有的字段

    exclude = []  # 排除的字段

    labels = {}  # 提示信息

    help_texts = {}  # 帮助提示信息

    widgets = {# 自定义插件

                "password": forms.PasswordInput(attrs={"class": "c1"}),

                "publishDate": forms.DateInput(attrs={"type": "date"}),

            }

     error_messages = {# 自定义错误信息

        'title': {'required': '不能为空', ...}  # 每个字段的所有的错误都可以写

    }

     在继承forms.ModelForm类时,models中的OnetooneManytomany属性会自动转换成ModelChoiceFieldModelMultipleChocieField自动读取数据。 

     

    ModelForm组件使用中添加数据,可以直接用save()方法,在使用save方法时,如果对象在实例化时有指定第二个关键字参数instance,则为更新操作!

     

  • 相关阅读:
    LSMW TIPS
    Schedule agreement and Delfor
    Running VL10 in the background 13 Oct
    analyse idoc by creation date
    New Journey Prepare
    EDI error
    CBSN NEWS
    Listen and Write 18th Feb 2019
    Microsoft iSCSI Software Target 快照管理
    通过 Microsoft iSCSI Software Target 提供存储服务
  • 原文地址:https://www.cnblogs.com/open-yang/p/11223192.html
Copyright © 2011-2022 走看看