我可以创建不会保存在数据库中的 django 模型吗?

and*_*abs 5 django django-models django-forms django-admin

如问题所问:我可以创建不会保存在数据库中的django模型(models.Model)吗?

原因是我想在我的 django 管理员中使用它来构建基于 forms.ModelForm 的自定义表单

knb*_*nbk 6

您可以覆盖模型的save()方法以防止保存到数据库,并用于managed = False防止 Django 创建适当的表:

class NonPersistantModel(models.Model):
    def save(self, *args, **kwargs):
        pass

    class Meta:
        managed = False
Run Code Online (Sandbox Code Playgroud)

请注意,当批量操作尝试保存此模型的实例时,这将引发错误,因为save不会使用该方法并且该表将不存在。在您的用例中(如果您只想使用模型来构建ModelForm),这应该不是问题。

但是,我强烈建议您将表单构建为forms.Form. 模型是您的数据库表的抽象,而普通表单ModelForm可以做任何生成的事情,等等。