我有一个联接表:
class ReviewTag(models.Model):
review = models.ForeignKey(Review)
tag = models.ForeignKey(Tag)
我执行以下操作以获取ReviewTag对象列表:
review.reviewtag_set.all()
如果Tag有一个名为'name'的属性。如何从对象列表中创建名称列表?
答案 0 :(得分:1)
[reviewtag.tag.name for reviewtag in review.reviewtag_set.all().select_related()]
或
[tag.name for tag in Tag.objects.filter(reviewtag__review=review)]
或
Tag.objects.filter(reviewtag__review=review).values_list('name', flat=True)
django的开发版本在JOIN中支持values
http://docs.djangoproject.com/en/dev/ref/models/querysets/#values
哪会让你做到
review.reviewtag_set.all().values('tag__name')
好东西。
答案 1 :(得分:0)
对于您的评论课,您可以添加带有通过attr的M2M。 http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships
class Review(models.Model):
..
tags = models.ManyToMany('yourapp.Tag', through='ReviewTag')
review.tags.values_list('name', flat=True)
我相信会给你一个与这篇评论相关的标签名称的懒惰列表。