django - 在 Django 数据库中插入表单数据
问题描述
当我尝试将表单数据插入 django 数据库时,调用函数时出现错误save()
。
form.save() AttributeError: 'FormName' object has no attribute 'save'
谁能帮我理解为什么这个对象没有属性保存?
解决方案
表单对象不是 ModelForm 或模型对象。您对表单调用 save() 的猜测可能是合乎逻辑的,但是,它并不直接与数据库对话。
以最简单的方式,如果您需要使用 Django 的 ORM 插入到数据库中,您将需要创建ModelForm
, 或的子类Model
。它们通常映射到单个数据库表。像Django 的官方文档中的这样:
class AuthorForm(ModelForm):
class Meta:
model = Author # specify model which talks to database.
fields = ['name', 'title', 'birth_date']
在 AuthorForm 类中,您还可以在 meta 中指定模型。您可以像这样定义模型:
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
您应该保留上述类AuthorForm
和Author
两个不同的 .py 文件以实现模块化。