我有这样的查询:
file_s = Share.objects.filter(shared_user_id=log_id)
现在,我想在Django视图中从file_s获取files_id属性。我怎么能这样做?
答案 0 :(得分:58)
使用values()
获取特定属性,该属性将返回您的词典列表,例如
file_s = Share.objects.filter(shared_user_id=log_id).values('files_id')
编辑:如果您只想要一个属性,则可以使用flat=True
建议仅返回值列表。但是,请确保列表的顺序。
file_s = Share.objects.filter(shared_user_id=log_id).values_list('files_id', flat=True).order_by('id')
答案 1 :(得分:5)
您的Share.objects.filter()
调用返回一个Djagno QuerySet对象,该对象不是单个记录,而是来自数据库的可迭代过滤对象,每个项目都是Share
个实例。您的filter
来电可能会返回多个项目。
您可以使用以下循环遍历QuerySet
:
for share in files_s:
print share.files_id
如果您知道您的查询只能返回单个项目,则可以执行以下操作:
share = Share.objects.get(shared_user_id=log_id)
将返回单个Share
实例,您可以从中访问files_id
属性。如果查询返回除1结果之外的任何内容,则会引发异常。
答案 2 :(得分:0)
如果您只想从单个值 QuerySet 中获取值,您可以这样做:
file_s = Share.objects.filter(shared_user_id=log_id).values_list('files_id', flat=True).first()