Джанго получает атрибуты внешнего ключа - PullRequest
1 голос
/ 14 сентября 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 save(self,*args,**kwargs):
        self.date_created = datetime.now()
        super(Link_Book_Course,self).save(*args,**kwargs)

и мне нужно получить название и название книги (которые являются атрибутами Book) из указанного Link_Book_Course.

Это то, что я придумал, но это не работает - у инстансов, по-видимому, нет доступа к менеджеру

storedCourse = Link_Book_Course.objects.filter(course__name= nameAndNumberStore[0] + nameAndNumberStore[1])
        storedLink = Link_Book_Course.objects.filter(course = storedCourse)[0]
        storeOfAuthorNames = storedLink.objects.values('book__author')
        storeOfBookNames = storedLink.objects.values('book__title')

Edit- Неважно, я понял это - для справки - вы не можете получить атрибуты через отношение внешнего ключа.

Вместо этого я отфильтровал Книги, у которых был курс, который искал пользователь.

1 Ответ

2 голосов
/ 14 сентября 2011

Вот еще более простой способ!

>>> course = Course.objects.filter(name= nameAndNumberStore[0] + nameAndNumberStore[1])
>>> links = course.link_book_course_set.all()
>>> BookAuthorNames = [(link.book.title, link.book.author) for link in links]
(('Book1','Author1'),('Book2','Author2'),...)

Помните, что django ORM - мощная система!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...