2011-12-21 78 views
2

我試圖爲一個模型生成一個自動slu whenever,只要它是空的,從另一個字段。這是代碼:在爲燈具使用loaddata時模型的save()方法會被調用嗎?

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()方法不會被觸發。這是正常的行爲嗎?我怎樣才能抓住夾具?

+0

但在轉儲之前對象未保存(使用'save()')? – juliomalegria 2011-12-21 21:01:49

回答

2

這是正常的行爲,從documentation

當夾具文件進行處理,將數據保存到數據庫中作爲 是。模型定義的保存方法和pre_save信號不叫

+0

它似乎post_save()是,雖然我不知道他們爲什麼會把它留在...但我有UserProfile創建post_save信號和稍後使用loaddata導致user.id和userprofile之間的一些不匹配。 userid的... – 2012-10-25 02:52:04

+0

並回答我自己...檢查_raw_似乎有竅門 http://stackoverflow.com/questions/3499791/how-do-i-prevent-fixtures-from-conflicting-with-django -post保存信號代碼 – 2012-10-25 02:54:53

相關問題