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

... Django Modelleri - Problem ManyToManyField eklemek kullanarak() yöntemi aşağıda eklenti() yöntemini kullanarak bir sorun var

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() 

Garip, print self.operators.values() çizgi incelenmesi üzerine, ancak, doğru değerleri görüntüler django yöneticisine kayıt yaptırıldığında, yönetici bir operatör olarak kaydedilmemiş.

ie.

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

Burada hangi tür sihirlere ihtiyacım var?

+0

Ben aynı sorunu yaşıyorum. Hatta bir post_save sinyali oluşturdum ve add() yönteminin yapışmasını sağlayamadım. ManyToMany'nin her iki tarafında da varsayılan otomatik numara kimliği kullanılmıyor. Bunun onunla bir ilgisi olup olmadığını merak ediyorum. –

cevap

3

ben rastgele bu soru belki gerçek değil bulundu, ancak öncelikle self.supervisor kaydetmek gerekir:

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() 
İlgili konular