Миксин Python: Почему мое сериализованное поле не передается?
Пытаюсь написать очень простой python mixin для установки статуса "ReadOnly". Вот что у меня есть
class ReadOnlyMixin:
readonly_fields = serializers.SerializerMethodField()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.get_readonly_fields():
self.fields[field].read_only = True
def get_readonly_fields(self):
raise NotImplementedError(
"Classes subclassing ReadOnlyMixin must implement a "
"`get_readonly_fields` method"
)
и в моем классе сериализатора у меня есть
class TestSerializer(mixins.ReadOnlyMixin, serializers.ModelSerializer):
class Meta:
model = models.Test
fields = '__all__'
def get_readonly_fields(self):
exp = self.instance
return ['status'] if exp.status != 'Pending' else []
Другие поля в сериализаторе проходят, а readonly_fields - нет. Все вызывается также, потому что мой self.fields['status'].read_only обновляется до True.
Даже если я просто назначаю readonly_fields = ['status'], он все равно не проходит.
Что я делаю не так?