2012-02-21 31 views
6

Theo mặc định, khi sử dụng django-tastypie và lấy một danh sách tài nguyên, đáp ứng được các định dạng:Có thể đặt khóa đối tượng django-ngon không?

{ 
    "meta": { 
     "limit": 20, 
     "next": null, 
     "offset": 0, 
     "previous": null, 
     "total_count": 3 
    }, 
    "objects": [{ 
     "body": "Welcome to my blog!", 
     "id": "1", 
     "pub_date": "2011-05-20T00:46:38", 
     "resource_uri": "/api/v1/entry/1/", 
     "slug": "first-post", 
     "title": "First Post", 
     "user": "/api/v1/user/1/" 
    }, 
    ... 
    ] 
} 

Tôi đã đào vào tài liệu và trông có vẻ & nhìn, nhưng tôi dường như không thể tìm thấy bất kỳ loại tùy chọn meta hoặc thiết lập để thay đổi "đối tượng" chìa khóa để thực sự mô tả các mặt hàng trả lại. Ví dụ: giả sử tôi có danh sách các vị trí trong một cuộc gọi api và danh sách những người khác. Tôi muốn có thể phân biệt khóa cho "vị trí" và "mọi người". Lý do thực sự cho điều này là vì tôi đang sử dụng RestKit trên iOS và muốn có thể thiết lập nhiều ánh xạ.

+0

tôi đã cùng một vấn đề. Tôi đào thông qua các tài liệu, mã nguồn, thậm chí cả trình theo dõi vấn đề github và không thể tìm thấy bất cứ điều gì, vì vậy tôi đã từ bỏ. Tôi khá chắc chắn rằng nó không thể vào thời điểm này, nhưng tôi muốn được chứng minh là sai. –

Trả lời

15

Móc tài nguyên alter_* có thể được sử dụng để thay đổi cấu trúc của dữ liệu.

Một Resource ví dụ sử dụng 'địa điểm' sẽ là:

class MyLocationsResource(ModelResource): 
    def alter_list_data_to_serialize(self, request, data): 
     data['locations'] = data['objects'] 
     del data['objects'] 
     return data 

    def alter_deserialized_list_data(self, request, data): 
     data['objects'] = data['locations'] 
     del data['locations'] 
     return data 
+0

Lưu ý rằng thuộc tính 'Meta.collection_name' mới thực hiện tương tự, nhưng nó [không nhất quán] (https://github.com/toastdriven/django-tastypie/pull/467) hiện tại. –

Các vấn đề liên quan