Django models Django模型-使用ManyToManyField add()方法时出现问题

Django models Django模型-使用ManyToManyField add()方法时出现问题,django-models,Django Models,我在使用下面的add()方法时遇到问题 class JobRecord(models.Model): """JobRecord model""" project = models.ForeignKey(Project) date = models.DateField() supervisor = models.ForeignKey(User, related_name='supervisor

我在使用下面的add()方法时遇到问题

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()
行显示了正确的值,但是,在检查django admin中的记录时,主管没有被保存为操作员


我在这里需要什么样的魔法?

我随机发现了这个问题,所以可能不是真的,但你应该先保存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()

我也有同样的问题。我甚至设置了一个post_save信号,但无法使add()方法保持不变。我的许多人都没有使用默认的自动编号id。我想知道这是否与此有关。
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()