我有一个中间模型,如下-
class Link_Book_Course(models.Model):
book = models.ForeignKey(Book)
course = models.ForeignKey(Course)
image = models.CharField(max_length = 200, null=True)
rating = models.CharField(max_length = 200,null=True)
def __unicode__(self):
return self.title
def save(self):
self.date_created = datetime.now()
super(Link_Book_Course,self).save()
我已经创建了一个新的Book和一个新的Link_Book_Course,并且正在尝试将那本书添加到Link_Book_Course
称Link_Book_Course为newCourseLink
,称Book为newBook
。
我认为这个调用会起作用-
newCourseLink.book_set.add(newBook)
但是Django抛出一个错误,说newCourseLink没有属性book_set-有人知道为什么吗?
此外,如何将Book添加到newCourseLink
?
谢谢
您建立关系的方式,每个Link_Book_Course
(可怕的名字,顺便说一句)只能有一本书。你不能添加书,你只能通过newCourseLink.book
查看那本书。
如果您希望每个LBC有多本书,那么FK应该从Book到LBC。
注释后编辑中间模型的关键在于它的两个fk的每一个组合都有一个实例。如果要添加新书,则需要新的LBC实例。您可以更改当前LBC只引用newCourseLink.book = my_new_book
的书,但正如我所说,您不能添加一个。