2012-05-16 2 views
0

Im работает в двух моделях ralated через многие ко многим, вот соответствующий код:Джанго модель чистый выпуск

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? – 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() 
Смежные вопросы