Django rest framework 使用选项序列化整型字段的选项文本
我想序列化一个有很多选择的模型,比如:Django rest framework 使用选项序列化整型字段的选项文本,django-rest-framework,Django Rest Framework,我想序列化一个有很多选择的模型,比如: class House(models.Model): ACCESSIBILITY_CHOICES = ( (ACCESSIBILITY_FULL, 'Full'), (ACCESSIBILITY_PARTIAL, 'Partial'), (ACCESSIBILITY_NONE, 'None') ) accessibility = models.IntegerField(max_length=1, choices=ACCESSIBI
class House(models.Model):
ACCESSIBILITY_CHOICES = (
(ACCESSIBILITY_FULL, 'Full'),
(ACCESSIBILITY_PARTIAL, 'Partial'),
(ACCESSIBILITY_NONE, 'None')
)
accessibility = models.IntegerField(max_length=1, choices=ACCESSIBILITY_CHOICES, null=True)
我喜欢默认序列化程序,例如:
class HouseView(generics.ListCreateAPIView):
model = House
serializer_class = HouseSerializer
class HouseSerializer(serializers.ModelSerializer):
class Meta:
model = House
如果我只需要整数值,效果非常好
{accessibility:1}
然而,我想要的
{accessibility:'Full'}
非常感谢您的帮助。
非常感谢。使用原始值设置序列化程序字段中的选项,如
ACCESSIBILITY_CHOICES = (
('Full', 'Full'),
('Partial', 'Partial'),
('None', 'None')
)
然后看一下重写“to_native”方法,以便将字符串值转换为其等效整数
这将为您提供一个使用字符串表示的外部API,但提供一个使用整数表示的后端
更新2019:DRF现在使用不同的方法名称从内部转换为内部,请参阅。将它们命名为:to_representation
和to_internal_value
,而不是to/from_native
,您可以获得一个只读序列化器字段,该字段具有模型字段的详细值,并通过该方法进行选择。在字段上设置选项时,会自动添加此方法。可以将该方法设置为字符字段的源
对于也支持写入数据的端点,我建议添加“normal”字段和另一个扩展名为\u name
的只读字段
在您的示例中,以下内容应该会生成您要查找的输出。accessibility\u name
是只读的,而accessibility
允许写入/更新值
class HouseSerializer(serializers.ModelSerializer):
accessibility_name = serializers.CharField(source='get_accessibility_display')
class Meta:
model = House
fields = ('accessibility', 'accessibility_name', )
好的,酷。谢谢你看这个。很好,我查过了,没有比这更具声明性的方法来覆盖到本机。