首先,我們來看看modelform的實現
model.py class Book(models.Model): title=models.CharField(max_length=32)
price=models.DecimalField(max_digits=8,decimal_places=2)
pub_date=models.DateField()
publish=models.ForeignKey("Publish")
authors=models.ManyToManyField("Author")
def __str__(self): return self.title
forms.py
#Modelform將一個model轉化成一個form組件
class BookModelForm(forms.ModelForm):
class Meta:
model=models.Book
fields="__all__"
這一步做的事情相當於下面的代碼
'''
class BookModelForm(form.Form):
title=forms.CharField(max_length=32)
price=forms.IntegerField()
pub_date=forms.DateField()
'''
下面看看forms組件里面的內容:里面包含了很多的類和插件,並且包含了modelform組件
""" Django validation and HTML form handling. #Django驗證和HTML表單處理
"""
from django.core.exceptions import ValidationError # NOQA
from django.forms.boundfield import * # NOQA
from django.forms.fields import * # NOQA
from django.forms.forms import * # NOQA
from django.forms.formsets import * # NOQA
from django.forms.models import * # NOQA
from django.forms.widgets import * # NOQA
下面定位到modelform:它繼承了BaseModelForm
class ModelForm(six.with_metaclass(ModelFormMetaclass, BaseModelForm)): pass