django-models
2009-03-11 2 views 2 likes 
2

... 장고 모델 - 문제 ManyToManyField 추가하여() 메소드 I 아래 추가() 메소드를 사용하여 문제가

class JobRecord(models.Model): 
    """JobRecord model""" 

    project    = models.ForeignKey(Project) 
    date    = models.DateField() 
    supervisor   = models.ForeignKey(User, related_name='supervisor_set') 

    operators   = models.ManyToManyField(User, related_name='operators_set', help_text='Include the supervisor as an operator here also.') 

    vehicles   = models.ManyToManyField(Vehicle, blank=True, null=True) 

    def __unicode__(self): 
     return u"%s - %s" % (self.project.name, self.date.strftime('%b %d')) 

    def save(self, **kwargs): 
     super(JobRecord, self).save(**kwargs) 
     if not self.operators.filter(pk=self.supervisor.pk): 
      self.operators.add(self.supervisor) 
      print self.operators.values() 

가 이상하게 print self.operators.values() 라인의 검사시에, 그러나, 정확한 값을 표시 장고 관리자에서 기록, 감독자는 운영자로 저장되지 않았습니다.

즉.

self.operators.add(self.supervisor) # fails to commit 

여기에 어떤 종류의 마법이 필요합니까?

+0

저도 같은 문제에 봉착합니다. 심지어 post_save 신호를 설정하고 add() 메서드를 사용할 수 없습니다. 내 ManyToMany의 어느 쪽도 기본 자 동 번호를 사용하지 않습니다. 그게 그 일과 관련이 있는지 궁금해. –

답변

3

나는 무작위이 질문은 어쩌면 실제하지 찾았지만, 먼저 self.supervisor 저장해야합니다 :

def save(self, **kwargs): 
    super(JobRecord, self).save(**kwargs) 
    if not self.operators.filter(pk=self.supervisor.pk): 
     self.supervisor.save() 
     self.operators.add(self.supervisor) 
     print self.operators.values() 

 관련 문제

  • 관련 문제 없음^_^