ModelForm用法讲解

Posted nihao2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ModelForm用法讲解相关的知识,希望对你有一定的参考价值。

模型表单:

首先我们在在定义一个模型类:

from django.db import models
from django.core import validators
# Create your models here.
class Book(models.Model):
    title = models.CharField(max_length=100)
    page = models.IntegerField()
    price = models.FloatField(validators=validators.MaxLengthValidator(limit_value =1000))

class User(models.Model):
    username = models.CharField(max_length=100)
    password = models.CharField(max_length=16)
    telephone = models.CharField(max_length=11)

然后在form文件里写 ,还可以自己定义错误信息在error_messages里写

from django import forms
from .models import Book
class AddBookForm(forms.ModelForm):   #ModelForm和Form用法一样   只不过能从模型中继承他的用法
    def clean_page(self):
        page = self.cleaned_data.get(page)
        if page > 100:
            raise forms.ValidationError(价格不能大于100)
        return page
    class Meta:
        model = Book
        #  fields 和exclude 必须要定义一个
        # fields = ‘__all__‘   #Book模型上得所有字段我们都可以继承得到
        # fields = [‘title‘,‘page‘]  #只验证title和page  价格可以不用写
        exclude = [price]  #除了price 和field=[‘title‘,‘page‘]一样
        error_messages = {   #自己定义错误信息。
            page :{
            required:请传入page参数,  #一个字段都没有传
            invalid:请输入一个可用得page参数  #传了错误得字段
            },
            title :{
                max_length : title不能超过100个字符

            },
            price:{
                max_value:图书价格不能超过1000
            }
        }

这样  我们在视图函数里引用form就可以了:

def add_book(request):
    form = AddBookForm(request.POST)
    if form.is_valid():
        title = form.cleaned_data.get(title)
        page = form.cleaned_data.get(page)
        price = form.cleaned_data.get(price)
        print(title:{}.format(title))
        print(page:{}.format(page))
        print(price:{}.format(price))
        return HttpResponse(success)
    else:
        print(form.errors.get_json_data())
        return HttpResponse(FAIL)

 

以上是关于ModelForm用法讲解的主要内容,如果未能解决你的问题,请参考以下文章

Django第四课——ModelForm用法

form modelform formset modelformset的各种用法

Django之路——form modelform formset modelformset的各种用法

c_cpp 加载源图像固定用法(代码片段,不全)

JavaSE 方法的使用

Django组件-ModelForm