2012-04-27 17 views
10

Tôi có một mô hình Tastypie ModelResource được các trường từ Mô hình Django thông thường. Tôi muốn làm cho một số lĩnh vực chỉ đọc trên tài nguyên Tastypie, mặc dù chúng có thể ghi trong mô hình cơ bản. Điều này có thể thực hiện một cách đơn giản không?Tôi có thể tạo trường mô hình địa chỉ yêu thích không?

Tôi đã thử những điều sau đây để avail không có:

def __init__(self, **kwargs): 
    super(ModelResource, self).__init__(**kwargs) 
    for f in getattr(self.Meta, 'read_onlys', []): 
     self.fields[f].read_only = True 
+0

Xin lỗi, tôi quên đề cập đến mà tôi không thể có được đề cập ở trên 'hack' để làm việc với các tài nguyên/schema được tạo ra bởi Tastypie, mà thực sự là những gì tôi là sau khi –

+2

tiếc. Tôi làm cho nó hoạt động bằng cách thay đổi read_only thành chỉ đọc. Lỗi của tôi. –

+2

không nên cuộc gọi siêu có tên lớp của bạn trong đó –

Trả lời

4

Thông thường tôi sẽ làm điều đó đại loại như vậy trong hydrat/quá trình khử nước.

Có lẽ những cách khác,

def hydrate(self, bundle): 
    if bundle.obj.pk: 
     bundle.data['somefield'] = bundle.obj.somefield 
    else: 
     bundle.data.pop('somefield') 

    return super(MyResource, self).hydrate(bundle) 
+2

Bạn nói đúng, nhưng tôi quên đề cập rằng tôi muốn lược đồ mà Tastypie có thể xuất ra cho tài nguyên để chọn lại nó là chỉ đọc. 'Giải pháp' của tôi làm điều này cho tôi. –

1

Không chắc cho dù bạn cần cái này nữa, nhưng đây là liên kết đến tài liệu chính thức liên quan đến lĩnh vực readonly.

dụ:

class ResourceA(ModelResource): 
    read_only_field = fields.DateTimeField('attribute', readonly=True) 

Hope this helps một ai đó.

Cảm ơn

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