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)
提前致谢.
不你不是。save() 不是由 loaddata 调用的,按设计(我想它的方式更加资源密集)。对不起。
编辑:根据文档,预保存也没有被调用(尽管显然是这样?)。
根据https://docs.djangoproject.com/en/dev/ref/django-admin/#what-sa-fixture ,数据按原样保存到数据库中
| 归档时间: |
|
| 查看次数: |
1644 次 |
| 最近记录: |