gpt4 book ai didi

python - 如何在 get_or_create 保存到数据库之前调用 clean 方法?

转载 作者:行者123 更新时间:2023-12-01 04:37:47 25 4
gpt4 key购买 nike

我在 Django 中有一个模型,其中某些数据经常无效。通常我会调用我编写的 clean() 方法来处理这些情况,但是 get_or_create() 似乎会调用 save() > 在我有机会调用 clean() 之前。

如何在 get_or_create() 尝试写入数据库之前清理我的数据?

这是我的模型的相关部分:

class Article(models.Model):
optional_attribute = models.CharField(max_length = 250)

def clean(self):
if not self.optional_attribute:
self.optional_attribute = 'Default'

最佳答案

可能更合适override the save method :

class Article(models.Model):
optional_attribute = models.CharField(max_length = 250)

def save(self, *args, **kwargs):
if not self.optional_attribute:
self.optional_attribute = 'Default'
super(Article, self).save(*args, **kwargs)

或者,您可以使用pre_save信号处理程序:

from django.db.models.signals import pre_save

class Article(models.Model):
optional_attribute = models.CharField(max_length = 250)

@classmethod
def pre_save_handler(cls, sender, instance, **kwargs):
if not instance.optional_attribute:
instance.optional_attribute = 'Default'

pre_save.connect(Article.pre_save_handler, sender=Article)

如果您想保留 clean 方法,您只需使用其中一种技术并从内部调用您的 clean 方法即可。

关于python - 如何在 get_or_create 保存到数据库之前调用 clean 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31437720/

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