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用法讲解的主要内容,如果未能解决你的问题,请参考以下文章
form modelform formset modelformset的各种用法