2012-04-27 4 views
10

일반 Django 모델에서 필드를 가져 오는 Tastypie ModelResource가 있습니다. Tastypie 리소스에서 특정 필드를 읽기 전용으로 만들려합니다. 비록 기본 모델에 쓰기 가능하지만. 이것은 가능한 간단한 방법으로 달성 할 수 있습니까?tastypie 모델 리소스 필드를 읽기 전용으로 설정할 수 있습니까?

는 나는 아무 소용에 다음을 시도했다 :

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

죄송합니다

덕분에, 나는 전술 '해킹'어머 내가 –

+2

후있어 무엇 정말 Tastypie에 의해 생성되는 자원/스키마를 작동시킬 수 없다는 것을 언급하는 것을 잊었다. readonly를 readonly로 바꾸어서 작동 시켰습니다. 내 잘못이야. –

+2

수퍼 콜에 클래스 이름이 포함되어서는 안됩니다. –

답변

4

은 일반적으로 내가/수화물에 그런 일을 할 과정을 탈수 것입니다.

다른 방법은 아마이 있습니다

,

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

맞아,하지만 Tastypie가 리소스를 위해 출력 할 수있는 스키마가 읽기 전용임을 다시금 알리고 싶었습니다. 내 '솔루션'이 나를 위해 이것을 않습니다. –

1

확실하지 더 이상이 필요하지만, 여기 readonly 분야와 관련된 공식 문서에 대한 링크 여부.

예 :이 사람을 도움이

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

희망.

관련 문제