2012-05-16 87 views
0

林在通過多對多ralated兩種模式工作,這裏的相關代碼:Django的模型清潔問題

class Curso(models.Model): 
    horarios = models.ManyToManyField(Horario, related_name = 'cursos') 
    ... 
    def clean(self): 
     ... 
     self.horarios.all() 
    def save(self,*args,**kwargs): 
     self.full_clean() 
     ... 

Horarios已經被定義,現在當我嘗試在管理界面來創建一個CURSO的我得到指着self.horarios.all()錯誤:

'Curso' instance needs to have a primary key value before a many-to-many relationship can be used. 

這讓因爲它尚未保存,所以我的問題是,我如何訪問被保存的horarios當前Curso實例的價值觀念?

在此先感謝

+0

豈不的Horario模型有其自己的清潔方法?爲什麼你需要在Curso clean方法中使用它? – jdi

+0

@jdi horario = schedule,我需要horario不要在一些Curso實例中同時出現,這就是我如何驗證它們,迭代它們。 – loki

+0

可能的重複:http://stackoverflow.com/questions/6090859/django-instance-needs-to-have-a-primary-key-value-before-a-many-to-many-relatio – jdi

回答

2

的錯誤似乎相當直截了當給我 - 你根本無法保存一個對象之前調用ManyToMany

您可以重現錯誤:Curso().horarios

顯然上不可能存在的關係,你不能做驗證,所以簡單地包裹你的電話在if self.pk

if self.pk: 
    self.horarios.all()