我的模型设置如下:
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对象中添加分数?
答案 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)
我希望它可以帮到你。