我是Django的新手,似乎有一种简单明了的方法可以做到这一点,但如果是这样的话,我还没有找到它。
(稍微简化了代码)
我有个小学班级
class Article(models.Model):
    ...和第二个类
class Headline(models.Model):
    article = models.ForeignKey(Article)
    headline = models.CharField(max_length=200)有没有一种简单的方法来获取Article对象的headline属性(或者更确切地说,获取与Article对象相关联的所有Headline对象的headline属性)?我知道可以通过article属性过滤Headline对象,但我怀疑有一种更快、更简单的方法。例如,是否可以向类Article添加一个返回所有相关Headline对象的方法?
发布于 2011-07-29 16:54:06
获取所有实际标题的更好方法是使用values_list
article.headline_set.values_list('headline', flat=True)这通过实际请求headline字段来减少对数据库的命中率。
发布于 2011-07-28 23:54:39
如果您只有一个Article实例,那么可以使用以下命令获取所有的headline对象
article.headline_set.all()这将返回一个QuerySet,您可以像使用其他任何use一样使用它。
编辑:如果您想要获取实际的标题值,那么就像任何其他查询集一样,您将需要获取Headline的单个实例。例如,
headline = article.headline_set.all()[0].headlineEdit2:正如Thibault J在评论中指出的那样,你可以通过以下方式获得所有的头条新闻
headlines = [headline.headline for headline in article.headlines.all()]发布于 2011-07-29 00:12:49
可以指定related_name属性来设置用于访问文章标题的属性名称。
class Article(models.Model):
    pass
class Headline(models.Model):
    article = models.ForeignKey(Article, related_name='headlines')
a = Article.objects.all()[0]
print a.headlines.all()否则,默认属性名称将为headline_set,如murgatroid99所述。
https://stackoverflow.com/questions/6861890
复制相似问题