通常情况下,建立一个始终没有任何内容的ForeignKey
连接非常重要,然后才能add
编辑
这是我的model
s
class Class(models.Model):
title = models.CharField(max_length=30)
threshold = models.PositiveIntegerField(validators=[MaxValueValidator
(100),MinValueValidator(60)])
works = models.ForeignKey(Work,null=True) #blank=True also doesn't work
所以我创建了一个没有Work
的类,这在逻辑上是有道理的:
math = Class("math",90)
math.save()
现在假设我们homework
和quizzes
为Work
个实例:
math.works.add(homework,quizzes)
#gives the following error
AttributeError: 'NoneType' object has no attribute 'add'
math.works
显然是空的,这是有道理的,但这不会让我添加任何东西!
我如何能够在没有任何东西的情况下启动一个ForeignKey,然后能够add
到它?
答案 0 :(得分:1)
我的两分钱。 首先,我认为你应该将你的外键移到工作班而不是Class类。 add()适用于多个字段See documentation
class work(models.Model):
.....
subject = models.ForeignKey(Class,null=True)
这样就建立了这种关系。作业,作为工作类实例的测验都与数学相关,作为Class类的一个实例。
当您尝试保存时,请执行以下操作:
>>> homework = work.objects.get(pk=1)
>>> math = Class.objects.get(pk=1)
>>> homework.subject = math
>>> homework.save()
>>> quizzes = work.objects.get(pk=2)
>>> math = Class.objects.get(pk=1)
>>> quizzes.subject = math
>>> quizzes.save()
现在您可以检索给定类的所有工作:
math = Class.objects.get(pk=1)
math.work_set.all()
它将返回与数学相关的所有实例,在您的情况下,将是家庭作业和测验。