我最近向序列化程序添加了一个source='get_fieldname_display
。为了获得choices
元组的显示值,它工作得很好,但是现在我不能再使用API端点来发布数据,而不会出现错误:
TypeError: 'get_fieldname_display' is an invalid keyword argument for this function
明确地说,对序列化程序的添加是以下这一行:
^{pr2}$我知道这行代码导致了问题,因为当我注释掉它时,我可以毫无问题地发布数据。但是,我需要这一行,这样我就可以在获取数据时从choices
元组中获取显示名称。在
我认为如果我使用两个不同的序列化程序,一个用于GET,另一个用于POST,那么这个问题可能会得到解决,但是我不确定如何执行此操作—我在我的视图.py. 在
编辑:
我的模型是这样的:
class MakeObjects(models.Model):
FIELD_NAME_CHOICES = (
("01", "Choice 1"),
("02", "Choice 2"),
)
fieldname = CharField(choices = FIELD_NAME_CHOICES)
此序列化程序看起来像:
class ObjectSerializer(serializers.ModelSerializer):
fieldname = serializers.CharField(source='get_fieldname_display')
class Meta:
model = MakeObjects
fields = ('__all__')
为此,您需要自定义序列化程序字段。在
以下是python 3的片段:
然后:
^{pr2}$不过,这有点老套,所以并不是所有的auto-docs引擎都能正确地检测到选择,尽管这很好用。在
您可能还喜欢https://github.com/encode/django-rest-framework/issues/1755
您可以尝试在以下位置添加新字段:
相关问题 更多 >
编程相关推荐