Django自定义保存修饰符导致表单集保存出现内部错误(在管理中为内联)

2024-04-20 05:48:01 发布

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

我有一个自定义的save方法和一个定制的decorator,它可以在自定义保存前后运行Django的model save():

在模型.py公司名称:

from django.contrib.auth.models import User
from django.db import models

def save_decorator(method_to_decorate):
    def wrapper(self, *args, **kwargs):
        super(type(self), self).save(*args, **kwargs)
        method_to_decorate(self, *args, **kwargs)
        super(type(self), self).save(*args, ** kwargs)
    return wrapper



class The_Image_Abstract(models.Model):

    class Meta:
        abstract = True

    create_time = models.DateTimeField(editable=False)


class Avatar(The_Image_Abstract):
    #I'm using this to track Avatar class in the template. There should be a better way.

    user = models.OneToOneField(User, related_name='avatar')

    @save_decorator
    def save(self, *args, **kwargs):
        "my stuff here"
        pass

当在管理页面中保存或修改头像时,这项工作非常完美。但是,当化身保存为另一个模型的内联表单集时,它会引发内部错误(formset在添加decorator之前工作)。 这里出什么问题了?我看到有人在使用Postgres时收到这个错误的帖子,我也在使用Postgres,但我不认为这个案例是由Postgres引起的。在

^{pr2}$

感谢任何帮助!在

谢谢

时代


Tags: todjangofrom模型importselfmodelssave
1条回答
网友
1楼 · 发布于 2024-04-20 05:48:01

好吧,我找到了原因。这与decorator在设置一些没有默认值的非null字段之前试图保存模型有关。我还不知道为什么只有在管理内联(formset)中保存新对象时才会导致错误。但是在运行自定义保存函数之前,将这些强制字段设置为某个值就解决了这个问题。在

相关问题 更多 >