Django REST框架元组被解释为一个字符串?

时间:2016-02-27 22:34:02

标签: python django rest serialization django-rest-framework

我创建了以下序列化程序:

class KeywordSerializer(serializers.HyperlinkedModelSerializer):      

    class Meta:                                                                    
        model = Keyword                                                            
        fields = ('my_field')

但是,当我尝试在视图集中使用它时,我收到以下错误:

  

fields选项必须是列表或元组或“__all__”。得了str。

但问题是,字段是一个元组。我甚至尝试将其设置为所有或列表,但我得到了相同的错误。无论字段的名称如何,都会发生相同的错误。

有人知道为什么会这样吗?

2 个答案:

答案 0 :(得分:11)

是的,在Python中('my_field') 一个字符串。要创建单元素元组,您需要一个逗号:('my_field',)

请注意,这与DRF无关。

答案 1 :(得分:0)

您不能通过字段将单个元素/属性作为字符串传递。 'my_field' 在这里表现得像一个字符串,但是如果你在 , 之后添加一个额外的逗号 (('my_field',)) 那么它的表现就像一个元组,并且 fields() 支持元组和列表,不是字符串(str)。