避免在Djang中使用ModelForm和m2m关系保存两次

2024-09-28 01:25:25 发布

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

我有两个模型。在

MyModelForm.save函数被调用时,我想创建一个MyOtherModel的实例,并向其添加MyModel。为此,我需要首先在MyModel实例的MyModelForm.save中调用save,否则无法将其添加到MyOtherModel。在

问题是MyModel.save被调用了两次,因为当从MyModelForm.save返回实例时,它会再次被调用。在

如果不调用save两次,如何使此代码正常工作?在

很多人不明白我为什么要这么做,但我隐藏了很多细节来举一个最小的例子。

管理员py

def do_something(instance):
    foo = MyOtherModel.objects.create()
    foo.models.add(instance)


class MyModelForm(forms.ModelForm):

    def save(self, *args, **kwargs):
        instance = super().save(*args, **kwargs)
        instance.save()
        do_something(instance)
        return instance


@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm

模型.py

^{pr2}$

Tags: 实例instancepy模型foosavedefargs

热门问题