Manytomany字段为None,无法为模型创建或添加字段。如何添加字段?

时间:2017-05-31 22:47:05

标签: django django-models django-views

我的模型设置如下:

class Person(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                         related_name='person_user')
    type = models.IntegerField()

class Score(models.Model):
    person = models.ForeignKey(Person, related_name='person')
    score = models.FloatField(default=0)

我可以很好地创建Score对象并创建与Person的关系。但是,下一部分造成了一些困难。我在创建了以下字段后添加了分数(最后一行除外):

class Applicant_Response(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                      related_name='user')
    interview = models.ForeignKey(Interview, related_name='interviews')
    extra_information = models.ForeignKey(ExtraInformation, related_name='extra_information', null=True, blank=True)
    score = models.ManyToManyField(Score, related_name='applicant_score', default=1)

我创建了一个得分为0的Score对象和一个用作得分默认值的人(被指定为ID为1)。但是,当我尝试访问Applicant_Response中的字段分数时,我得到profiles.Score.None,这让我感到困惑(配置文件是应用程序的名称)。

根据我的理解,我无法在manytomany字段中添加任何内容,因为它不存在?也许我试图将Score添加到Applicant_Response的方式不正确?:

try:
    applicants = models.Applicant_Response.objects.filter(interview=interviews)
    for applicant in applicants:
        applicant.score.add(models.Score.objects.get(id=1))
        applicant.save()
        print applicant.score
except Exception as e: print e

我在stdout中获得以下内容:profiles.Score.None

如何在Applicant_Response对象中添加分数?

1 个答案:

答案 0 :(得分:0)

我找到this

# You have to Save() first.
applicant.save()
applicant.score.add(models.Score.objects.get(id=1))
# I think it work???
# If not:
sc1 = models.Score.objects.get(id=1)
applicant.save()
applicant.score.add(sc1)

我希望它可以帮到你。