Подтвердить что ты не робот

Могу ли я сделать tashypie modelresource поле только для чтения?

У меня есть 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
4b9b3361

Ответ 1

Обычно я делал бы такие вещи в процессе гидратации/обезвоживания.

Есть, вероятно, другие способы,

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

Не уверен, что вам это нужно больше, но здесь ссылка на официальную документацию, относящуюся к readonly полям.

Пример:

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

Надеюсь, это поможет кому-то.

Спасибо