Django获取外键的属性

时间:2011-09-13 20:50:59

标签: django foreign-keys

我有一个中间模型 -

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)

我需要从指定的Link_Book_Course获取书名和书名(这是Book的属性)。

这是我提出的,但它不起作用 - 实例显然无法访问经理 -

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

编辑 - 没关系,我已经把它想出来 - 为了参考 - 你不能通过外键关系获得属性。

相反,我过滤了具有用户搜索过的课程的图书。

1 个答案:

答案 0 :(得分:2)

这是一种更简单的方法!

>>> 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功能强大!