2013-01-22 73 views

回答

32

使用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') 
+0

我怎样才能得到唯一的ID:[{'files_id':1L}]从这个整数。 – user1881957

+1

@ user1881957,检查更新,如果'flat = True'参数可以使用。 – Rohan

+0

TypeError:values()得到了一个意外的关键字参数'flat' – user1881957

1

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结果以外的任何内容,则会引发异常。

相关问题