Django model.save()不使用loaddata

Bar*_*ley 9 django django-models

我有一个模型,它覆盖了save()来强制一个字段:

class MyModel(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

当我运行加载数据来加载夹具时,save()似乎没有调用它,因为slug字段在数据库中是空的.我错过了什么吗?

我可以通过pre_save钩子信号来使它工作,但这有点像黑客并且开始save()工作会很好.

def mymodel_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    instance.slug = slugify(instance.name)

pre_save.connect(mymodel_pre_save, sender=MyModel)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Dav*_*ave 3

不你不是。save() 不是由 loaddata 调用的,按设计(我想它的方式更加资源密集)。对不起。

编辑:根据文档,预保存也没有被调用(尽管显然是这样?)。

根据https://docs.djangoproject.com/en/dev/ref/django-admin/#what-sa-fixture ,数据按原样保存到数据库中