2012-04-27 8 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を読み取り専用に変更することでそれを動作させました。私の悪い。 –

+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) 

が、これは誰かに役立ちます願っています。

関連する問題