我想序列化一个有很多选择的模型,比如:
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 现在使用不同的方法名称从/到内部转换,参见 docs .命名它们:
to_representation
和 to_internal_value
, 而不是 to/from_native
.
关于django-rest-framework - 使用选项序列化 IntegerField 的选择文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107471/