2012-04-27 11 views
10

Tarlalarını düzenli bir Django Modelinden alan bir Tastypie ModelResource var. Temel modelde yazılabilir olsalar bile, bazı alanları Tastypie kaynağında salt okunur yapmak istiyorum. Bunu basit bir şekilde gerçekleştirmek mümkün mü?Bir tastipie modelresource alanını salt okunur yapabilir miyim?

Ben boşuna aşağıdaki denedim:

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

Maalesef

sayesinde ben yukarıda belirtilen 'hack' e-posta ile ben –

+2

sonra olduğum şey gerçekten Tastypie tarafından oluşturulan kaynak/şema ile çalışmak için alamadım belirtmeyi unutmuşum. Okumak için read_only'yi değiştirerek çalıştım. Benim hatam. –

+2

süper aramanın sınıf isminizin içinde olmamalıdır. –

cevap

4

Normalde/hidrat içinde böyle şeyler yapmak sürecini kurutmak olacaktır.

başka yolları muhtemelen vardır

,

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

Haklısın, ama Tastypie'nin kaynak için çıktısını şiirin istediği şemadan istediğimden bahsetmeyi unuttum. Benim 'çözümüm' bunu benim için yapar. –

1

emin değil artık bu gerekir, ancak burada readonly alanlara ilişkin resmi belgelere bağlantı olsun.

örnek: Bu kimse yardımcı

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

Umut.

İlgili konular