Django Похожие Менеджер Добавить - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть промежуточная модель, которая выглядит следующим образом -

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()

Я создал новую книгу и новый Link_Book_Course и пытаюсь добавить эту книгу в Link_Book_Course

позвоните на Link_Book_Course newCourseLink и позвоните в Книгу newBook.

Я думал, что этот вызов будет работать -

newCourseLink.book_set.add(newBook)

но Django выдает ошибку, говоря, что newCourseLink не имеет атрибута book_set - кто-нибудь знает почему?

Кроме того, как я могу добавить Книгу к newCourseLink?

Спасибо

1 Ответ

0 голосов
/ 13 сентября 2011

Как вы установили отношения, каждый Link_Book_Course (ужасное имя, кстати) может иметь только одну книгу. Вы не можете добавлять книги, вы можете ссылаться только на эту книгу через newCourseLink.book.

Если вы хотите, чтобы у каждого LBC было несколько книг, FK должен перейти из Книги в LBC.

Редактировать после комментария Суть промежуточной модели в том, что для каждой комбинации двух ее ФК существует один экземпляр. Если вы хотите добавить новые книги, вам понадобятся новые экземпляры LBC, чтобы идти с ними. Вы можете изменить книгу, на которую ссылается текущий LBC, просто newCourseLink.book = my_new_book, но, как я уже сказал, вы не можете добавить ее.

...