我正在尝试学习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
这将返回数据库中的路径字符串。
答案 0 :(得分:1)
首先,您必须在原始查询中使用get
而不是filter
来获取文档:
obj = Document.objects.get(pk=document_id)
因为filter
总是返回一个查询集,即使只有一个匹配的对象。
现在你有了obj
,你可以使用普通的点符号来获取属性:
obj.labelled_image
这将返回LabelModel的相关实例,obj.labelled_image.image
将返回文件字段的值。