[英]serializing a Django ModelSerializer into json?
我已經定義了一個 model 具有我想包含在序列化中的屬性:
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 不會序列化 model 上的自定義屬性,所以我必須像您在上面看到的那樣創建自己的序列化程序。 但是,當我嘗試做同樣的事情時,我收到一個錯誤:
serialized_flowers = OKSerializer.serialize("json", flowers)
# ERROR" 'OKSerializer' has no attribute 'serialize'
這可能是因為我使用的是ModelSerializer
,它沒有serialize()
function。
有沒有一種方法可以像以前一樣使用ModelSerializer
序列化為json
? ModelSerializer
是否有用於序列化到 json 的 function?
編輯我也試過:
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.
class OKSerializer(serializers.ModelSerializer):
is_okay = serializers.SerializerMethodField('is_okay')
class Meta:
model = models.Flower
fields = ['health', 'is_okay']
def is_okay(self, flower):
flower = flower.health
return flower == 'ok'
將您的序列化程序更改為此並從模式中刪除@property
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.