Django模型:保存前设置值

时间:2013-07-07 16:36:55

标签: django django-models django-orm

我有一个模型,我可以在将其保存到数据库之前自动设置一个值...到目前为止,我确实以这种方式覆盖了save()

def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
    if not self.paramX:
        self.paramX = value
    super(Post, self).save(force_insert, force_update, using, update_fields)

无论如何,使用bulk_create()这不起作用......我该怎么办? (我正在尝试使用信号,但没有运气)

2 个答案:

答案 0 :(得分:3)

摘自文档:(https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.bulk_create

  

不会调用模型的save()方法,也不会发送pre_save和post_save信号。

这是因为批量保存方法使用另一种方法来保存数据。因此,一种方法是在创建要插入的每个条目时手动执行此操作。

答案 1 :(得分:0)

我的偏好如下:

class Instrument(models.Model):
    name = models.CharField(max_length=20)

    def __init__(self, *args, **kwargs):
        super(Instrument, self).__init__(*args, **kwargs)
        self.name = "Bass"

修改

我刚刚重新阅读了你的问题。如果您只关心在保存时是否设置了“paramX”字段,那么您是否只能在模型字段中添加“默认”?即。

class Instrument(models.Model):
    name = models.CharField(max_length=20, default="No instrument")