【发布时间】:2015-08-03 09:13:02
【问题描述】:
我想覆盖 django 中的save 方法。
我使用的是 Django REST 框架,所以基本上序列化程序会处理模型的所有保存。
def save(self, split=True, **kwargs):
if split:
result = super(Entry,self).save(**kwargs)
logger.warn(result)
logger.error(self)
#tasks.split_entry(self)
else:
super(Entry,self).save(**kwargs)
现在我想将保存的对象传递给我的任务,但我不确定自己是对象还是结果是对象。
我不想中断该过程,因为我认为 django rest 需要获取已保存的对象以返回请求。所以我很困惑如何在这里使用super。
如果我执行上述过程,我将看不到任何日志记录。我认为它会跳过它们。
【问题讨论】:
-
你检查过'result'的值吗?
-
尝试 post_save 信号处理程序
-
Entry对象在self,如果你想保留日志并正常执行保存(你不想使用signals),尝试执行super方法最后。 -
@Gocht 。如果我想在保存创建对象后执行一些东西,那么我必须先使用超级然后再做我的东西
-
没问题,你没有修改对象,所以我认为你可以在它所在的地方做
super。
标签: python django django-rest-framework