我创建了以下序列化程序:
class KeywordSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Keyword
fields = ('my_field')
但是,当我尝试在视图集中使用它时,我收到以下错误:
fields
选项必须是列表或元组或“__all__”。得了str。
但问题是,字段是一个元组。我甚至尝试将其设置为所有或列表,但我得到了相同的错误。无论字段的名称如何,都会发生相同的错误。
有人知道为什么会这样吗?
答案 0 :(得分:11)
是的,在Python中('my_field')
是一个字符串。要创建单元素元组,您需要一个逗号:('my_field',)
。
请注意,这与DRF无关。
答案 1 :(得分:0)
您不能通过字段将单个元素/属性作为字符串传递。 'my_field'
在这里表现得像一个字符串,但是如果你在 ,
之后添加一个额外的逗号 (('my_field',)
) 那么它的表现就像一个元组,并且 fields()
支持元组和列表,不是字符串(str)。