簡體   English   中英

如何檢查是否從django admin調用了save()

[英]How to check if save() was called from django admin

我想保存兩個對象,其中一個通過ForeignKey('self')相關。

我想檢查是通過django admin調用save()方法還是從save()本身調用recursive方法。 因為我想保存對象的兩個實例而不是無限量的它們。

該模型:

prev_work = models.ForeignKey('self', on_delete=models.CASCADE,
editable=False, null=True, blank=True)

保存代碼:

prev_work = Work(chapter=self.chapter, job=self.job, prev_work=self)
prev_work.save()

我期待保存兩個對象,但我不知道如何在方法結束時停止程序調用save。 我是通過其他方式完成的,但我仍然想知道如何檢查是否從django admin調用了方法。 謝謝!

目前還不是很清楚你想要實現什么,但看起來你想要遞歸地調用.save()一個限制次數。 如果是這種情況,您可以使用自定義關鍵字參數作為標志或計數器的方法。

class Work(models.Model):
    def save(self, *args, **kwargs):
        # the default could be the max number of additional calls you want for this method
        call_x_more_times = kwargs.pop('call_x_more_times', 1)

        super().save(*args, **kwargs)
        # ... do other things, if you need to ...

        if call_x_more_times > 0:
            # set argument for next call, decreased by 1
            kwargs['call_x_more_times'] = call_x_more_times - 1
            self.save(*args, **kwargs)

我們無法提供更多幫助,因為您沒有在問題中提供太多信息。 這是ehlp嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM