Django Models - Problema usando ManyToManyField método add ()

votos
2

Eu tenho um problema usando o método add () abaixo ...

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

Estranhamente, a print self.operators.values()linha exibe os valores corretos, no entanto, após a inspeção do registro na administração do Django, o supervisor não foi salvo como um operador.

ie.

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

Que tipo de magia que eu preciso aqui?

Publicado 11/03/2009 em 05:31
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Eu encontrei aleatoriamente esta pergunta talvez por isso não é real, mas você deve guardar self.supervisor primeiro:

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()
Respondeu 03/01/2010 em 19:31
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more