我有这样的查询:如何从Django中的查询集中获取特定属性?
file_s = Share.objects.filter(shared_user_id=log_id)
现在,我想从在Django视图file_s的files_id属性。我怎样才能做到这一点?
我有这样的查询:如何从Django中的查询集中获取特定属性?
file_s = Share.objects.filter(shared_user_id=log_id)
现在,我想从在Django视图file_s的files_id属性。我怎样才能做到这一点?
使用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')
你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结果以外的任何内容,则会引发异常。
我怎样才能得到唯一的ID:[{'files_id':1L}]从这个整数。 – user1881957
@ user1881957,检查更新,如果'flat = True'参数可以使用。 – Rohan
TypeError:values()得到了一个意外的关键字参数'flat' – user1881957