【问题标题】:How to get django model object in save method如何在保存方法中获取 django 模型对象
【发布时间】: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


【解决方案1】:

您需要使用self。 Django 模型的save 方法不返回值,所以你的result 变量是None

【讨论】:

  • 我有一个非常相似的情况,但我不太明白该放在哪里self你能举个例子吗?
猜你喜欢
  • 2020-02-12
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2022-10-14
  • 2021-05-14
  • 1970-01-01
相关资源
最近更新 更多