如何从外键获取模型列值

时间:2016-09-28 12:01:04

标签: django

我正在尝试学习Django,我有一个简单的模型,如:

class Document(models.Model):
    labelled_image = models.ForeignKey(LabelModel, db_column='label')

所以这是指另一个模型(LabelModel),定义为:

class LabelModel(models.Model):
    image = models.FileField(upload_to='documents/label',
                             db_column='path', default='Some Value')

现在,在某些时候我保存了一个Document模型的实例,我抓住了主键。所以,我可以通过以下方式获得模型实例:

obj = Document.objects.filter(pk=document_id)

现在,我的问题是如何获得外键指向的image中相应LabelModel的实际值?在数据库伪代码中我会有类似的东西(我暂时没有这样做):

SELECT path from label_table where id=obj.labelled_image

这将返回数据库中的路径字符串。

1 个答案:

答案 0 :(得分:1)

首先,您必须在原始查询中使用get而不是filter来获取文档:

obj = Document.objects.get(pk=document_id)

因为filter总是返回一个查询集,即使只有一个匹配的对象。

现在你有了obj,你可以使用普通的点符号来获取属性:

obj.labelled_image

这将返回LabelModel的相关实例,obj.labelled_image.image将返回文件字段的值。