Я определил модель со свойством, которое я хотел бы включить в сериализацию:
class Flower(models.Model):
health = CharField(...)
@property
def is_okay(self):
return self.health == 'ok'
class OKSerializer(serializers.ModelSerializer):
is_okay = serializers.Field()
class Meta:
model = Flower
fields = '__all__'
Первоначально я использовал django.core.serializers
для сериализации в json
:
flowers = Flower.objects.all()
serialized_flowers = serializers.serialize("json", flowers)
Это было очень хорошо, но Django не сериализует настраиваемое свойство модели, поэтому мне пришлось создать свой собственный сериализатор, как вы видите выше. Однако, когда я пытаюсь сделать то же самое, я получаю сообщение об ошибке:
serialized_flowers = OKSerializer.serialize("json", flowers)
# ERROR" 'OKSerializer' has no attribute 'serialize'
Вероятно, это потому, что я использую ModelSerializer
, который не имеет функции serialize()
.
Есть ли способ сериализации в json
с помощью ModelSerializer
, как я делал раньше? Есть ли у ModelSerializer
функция сериализации в json?
EDIT Я также пробовал:
serialized_flowers = OKSerializer("json", flowers)
Но когда я пытаюсь print(serialized_flowers)
или даже возвращая его как HttpResponse(serialized_flowers, content_type='application/json')
, это приводит к следующей ошибке:
AssertionError: When a serializer is passed a `data` keyword argument you must call `.is_valid()` before attempting to access the serialized `.data` representation.