2016-01-25 80 views
1
class ProjectResource(ModelResource): 
    class Meta(object): 
    queryset = models.Projects.objects.all() 
    resource_name = 'projects' 
    list_allowed_methods = ['get', 'post', 'put'] 
    always_return_data = True 
    default_format = 'application/json' 
    user = auth.ValidateUser() 

    def get_list(self, request, **kwargs): 
    user_projects = super(ProjectResource, self).get_list(request, **kwargs) 
    result = json.dumps(user_projects.content) 
    return http.HttpResponse(result, 
          content_type='application/json', status=200) 

這是我的tastypie資源。如果我從auth.ValidateUser()發現用戶,我只需要回復項目表中的關聯項目。如果沒有,我想顯示一個錯誤字典,說沒有項目分配。我無法爲get_list添加過濾器。 我能夠與get_object_list要做,但如果我想回應類似錯誤字典自定義響應({「錯誤」:「沒有用戶映射」})它拋出錯誤AttributeError: "'dict' object has no attribute 'filter'"tastypie get_list過濾器查詢集

任何幫助是非常感謝這裏。

+0

什麼的'用戶= auth.ValidateUser()'該怎麼辦? –

回答

1

您可以在get_object_list中進行過濾,然後在get_list中如果queryset爲空,則返回您的字典。

另外,在get_object_list你可以這樣做:

from tastypie.exceptions import ImmediateHttpResponse 
response = http.HttpResponse(json.dumps({'error': 'No user mapped.'}), 
         content_type='application/json', status=400) 
raise ImmediateHttpResponse(response=response)