【问题标题】:Does a model's save() method get called when using loaddata for fixtures?将 loaddata 用于固定装置时是否会调用模型的 save() 方法?
【发布时间】:2012-01-25 14:27:21
【问题描述】:

每当模型为空时,我试图从另一个字段为模型生成一个自动 slug。这是代码:

class Position(RichText):
    name = models.CharField(max_length=200)
    slug = models.SlugField(null=True)

    def position_description(self):
        return self.content

    def __unicode__(self):
        return self.name

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)

        super(Position, self).save(*args, **kwargs)

当我使用 loaddata 加载初始固定装置时,似乎永远不会触发 save() 方法。这是正常行为吗?我如何也能捕捉到灯具?

【问题讨论】:

  • 但对象在转储之前没有保存(使用save())?

标签: django django-models fixtures


【解决方案1】:

这是正常行为,来自documentation

当夹具文件被处理时,数据被保存到数据库中 是。不调用模型定义的保存方法和 pre_save 信号

.

【讨论】:

  • 似乎 post_save() 是,虽然我不知道他们为什么会保留它...但是我使用 post_save 信号创建 UserProfile 并稍后使用 loaddata 会导致一些不匹配在 user.id 和 userprofile.userid 之间...
  • 并回答自己...检查 raw 似乎可以解决问题stackoverflow.com/questions/3499791/…
猜你喜欢
  • 2020-04-16
  • 2019-08-18
  • 2021-02-28
  • 1970-01-01
  • 2020-08-01
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
相关资源
最近更新 更多