我有一个自定义的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}$感谢任何帮助!在
谢谢
时代
好吧,我找到了原因。这与decorator在设置一些没有默认值的非null字段之前试图保存模型有关。我还不知道为什么只有在管理内联(formset)中保存新对象时才会导致错误。但是在运行自定义保存函数之前,将这些强制字段设置为某个值就解决了这个问题。在
相关问题 更多 >
编程相关推荐