我可以将tastypie modelresource字段设为只读吗?

Mat*_*nen 10 tastypie

我有一个Tastypie ModelResource,它从常规Django模型中获取其字段.我想在Tastypie资源上使某些字段只读,即使它们在底层模型中是可写的.这有可能以简单的方式完成吗?

我试过以下无济于事:

def __init__(self, **kwargs):
    super(ModelResource, self).__init__(**kwargs)
    for f in getattr(self.Meta, 'read_onlys', []):
        self.fields[f].read_only = True
Run Code Online (Sandbox Code Playgroud)

Iss*_*lly 4

通常我会在水合/脱水过程中做这样的事情。

或许还有其他方法,

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

    return super(MyResource, self).hydrate(bundle)
Run Code Online (Sandbox Code Playgroud)

  • 你是对的,但我忘了提到我想要 Tastypie 可以为资源输出的模式来反映它是只读的。我的“解决方案”为我做到了这一点。 (2认同)