gpt4 book ai didi

python - Django 自定义保存组织

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:32 25 4
gpt4 key购买 nike

所以我正在寻找一个自定义的save方法,它看起来像这样:

def save(self, *args, **kwargs):
is_created = False
if not self.pk:
is_created = True
super(self, ModelName).save(*args, **kwargs)
if is_created:
#do something
return True

我有两个主要问题...首先...是否需要return True?如果是这样,为什么?...第二...is_created 的目的是什么?为什么我不能将 #do some 放入 if not self.pk 中?

代码中的问题:

为什么我不能执行以下操作:

def save(self, *args, **kwargs):
if not self.pk:
#do something
super(self, ModelName).save(*args, **kwargs)
return True

或者如果我可以的话,为什么编写这段代码的人要以其他方式来做呢?有什么区别吗?

最佳答案

save 不必返回任何内容,因此您可以删除 return 语句。

def save(self, *args, **kwargs):
if not self.pk:
#do something
super(self, ModelName).save(*args, **kwargs)

实际上没有太大区别,除非您必须在第一次保存对象后执行某些操作。调用 save 方法后,应填充 pk 属性,因此如果您需要在第一次保存后对其执行某些操作,则需要跟踪它(如第一个代码示例你发布的确实)

<小时/>

第一个代码示例的替代方案可以是使用 signals :

def do_something_only_newly_created_objects(sender, **kwargs):
if kwargs['created']:
# do_something()

post_save.connect(do_something_only_newly_created_objects, sender=YourModel)

关于python - Django 自定义保存组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20827792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com