get_field 不工作 Django Rest Framework 序列化程序
get_field Not Working Django Rest Framework Serializer
在serializers.py
class WordSerializer(serializers.ModelSerializer):
synonym = serializers.ListField(child=serializers.CharField(max_length=100), allow_null=True)
class Meta:
model = Word
fields = ['word', 'id', 'user', 'definition', 'synonym', 'sentence', 'user', 'currently_studying']
当原始模型的同义词值为synonym1\nsynonym2\nsynonym3
时,序列化器中的同义词值应为return['synonym1', 'synonym2', 'synonym3']
。我该怎么做?
它不适用于同义词字段,因为无法将值的类型从字符串更改为列表,但我们可以向 json 输出添加自定义字段。这是一个例子。 json 输出中的键是“synonym_list”,如果您想更改它,只需更改 SerializerMethodField() 的名称和方法名称( get_ + new_name )并将其更改为字段列表(Meta class)相应地:
class WordSerializer(serializers.ModelSerializer):
synonym_list = serializers.SerializerMethodField()
class Meta:
model = Word
fields = ['word', 'id', 'user', 'definition', 'synonym', 'sentence', 'user', 'currently_studying', 'synonym_list']
def get_synonym_list(self, obj):
return obj.synonym.split("\n")
这对你有用吗?
在serializers.py
class WordSerializer(serializers.ModelSerializer):
synonym = serializers.ListField(child=serializers.CharField(max_length=100), allow_null=True)
class Meta:
model = Word
fields = ['word', 'id', 'user', 'definition', 'synonym', 'sentence', 'user', 'currently_studying']
当原始模型的同义词值为synonym1\nsynonym2\nsynonym3
时,序列化器中的同义词值应为return['synonym1', 'synonym2', 'synonym3']
。我该怎么做?
它不适用于同义词字段,因为无法将值的类型从字符串更改为列表,但我们可以向 json 输出添加自定义字段。这是一个例子。 json 输出中的键是“synonym_list”,如果您想更改它,只需更改 SerializerMethodField() 的名称和方法名称( get_ + new_name )并将其更改为字段列表(Meta class)相应地:
class WordSerializer(serializers.ModelSerializer):
synonym_list = serializers.SerializerMethodField()
class Meta:
model = Word
fields = ['word', 'id', 'user', 'definition', 'synonym', 'sentence', 'user', 'currently_studying', 'synonym_list']
def get_synonym_list(self, obj):
return obj.synonym.split("\n")
这对你有用吗?