这是来自 Django 文档的示例;
from django.db import models
from django.forms import ModelForm
TITLE_CHOICES = [
('MR', 'Mr.'),
('MRS', 'Mrs.'),
('MS', 'Ms.'),
]
class Author(models.Model):
name = models.CharField(max_length=100)
title = models.CharField(max_length=3, choices=TITLE_CHOICES)
birth_date = models.DateField(blank=True, null=True)
def __str__(self):
return self.name
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = ['name', 'title', 'birth_date']
您的表单 -AuthorForm 包含 name 是字符串且不能超过 100 个字符的信息。因为它在您的模型中 -Author。 title 和 birth_date 相同。 title 不能超过 3 个字符,并且必须是 MR、MRS 或 MS 之一。
如果您使用模型表单,则不必为表单字段指定类型和规则。模型表单可以从您的模型快速创建表单并根据您的模型进行验证。
假设您有一个author 实例,其中name 是Joe。
如果你打印author.name,它会返回Joe。
form = AuthorForm(initial={'name': 'Patrick'}, instance=author)
如果您打印form['name'].value(),它将返回Patrick,而不是Joe。它忽略了author 的name 值。您在表单中覆盖了它。如果您没有传递initial 参数,可能是Joe。