Django调用原始和重写的save方法

2024-09-24 22:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个愚蠢的问题,但它困扰了我很多(我对django和python都很陌生)

在我的django应用程序中,我重写了模型的save()方法,以便在文件系统上执行一些交互。在

我创建了这样一个表单类:

class AddItemForm(ModelForm):
    class Meta:
        model = OriginalModel

所以,在我看来窗体保存(),一切正常。在

但是,在测试我的应用程序时,我希望能够调用原始的save()方法,以避免创建大量我不会使用和必须处理的文件。在

我试图创建一个savebis()方法,以便保留原来的save()方法,但是如何将它传递给ModelForm,以便调用窗体保存()或表.savebis()? 在

编辑:savebis()已经在我的模型中编写并运行。我希望能够从modelform实例调用它,但我不知道如何做到这一点。在


Tags: django方法模型应用程序表单modelsave窗体
1条回答
网友
1楼 · 发布于 2024-09-24 22:25:29

根据您的问题,我觉得您有一些可选的处理应该在Model的save方法中发生。按照问题注释中的建议,只需将TESTING = True类型常量添加到测试期间使用的settings.py文件中,并在Modelsave方法中检查此值:

from django.conf import settings

class OriginalModel(Model):
    ...
    def save(self, *args, **kwargs):
        if not settings.TESTING:
            # Do some file system interaction, but not during testing.
            pass
        # Now save instance as per normal.
        return super(originalModel, self).save(*args, **kwargs)

如果您继续重写ModelFormsave方法,那么您必须复制ModelFormsave方法的现有功能,并将其更改为调用模型的savebis()方法,而不是save()方法。我建议不要走这条路,因为这会使代码比需要的更复杂。在

相关问题 更多 >