【发布时间】:2014-05-06 14:04:51
【问题描述】:
如所问: 我可以创建 django 模型(models.Model),它不会保存在数据库中吗?
原因是我想在我的 django 管理员中使用它来构建基于 forms.ModelForm 的自定义表单
【问题讨论】:
标签: django django-models django-forms django-admin
如所问: 我可以创建 django 模型(models.Model),它不会保存在数据库中吗?
原因是我想在我的 django 管理员中使用它来构建基于 forms.ModelForm 的自定义表单
【问题讨论】:
标签: django django-models django-forms django-admin
您可以覆盖模型的save() 方法以防止保存到数据库,并使用managed = False 来防止Django 创建相应的表:
class NonPersistantModel(models.Model):
def save(self, *args, **kwargs):
pass
class Meta:
managed = False
请注意,当批量操作尝试保存此模型的实例时,这将引发错误,因为不会使用 save 方法并且该表将不存在。在您的用例中(如果您只想使用模型来构建ModelForm),这应该不是问题。
但是,我强烈建议您将表单构建为 forms.Form 的子类。模型是您的数据库表的抽象,而普通表单可以执行生成的ModelForm 可以做的任何事情,等等。
【讨论】:
使用forms.Form 更容易:
class UserForm(forms.Form):
first_name = forms.CharField(max_length=100)
last_name = forms.CharField(max_length=100)
email = forms.EmailField()
【讨论】: