【问题标题】:Django REST framework tuple being interpreted as a string?Django REST框架元组被解释为字符串?
【发布时间】:2016-06-11 02:51:42
【问题描述】:

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

class KeywordSerializer(serializers.HyperlinkedModelSerializer):      

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

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

fields 选项必须是列表或元组或“__all__”。得到了字符串。

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      请注意,这与 DRF 无关。

      【讨论】:

      • 对于其他互联网搜索者 - 这同样适用于read_only_fields,否则您将收到错误The 'read_only_fields' option must be a list or tuple. Got str.
      • 哈哈!我有时会被这个问题的补充所吸引:在一行上留下一个尾随逗号会将结果转换为一个元组.. doh!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      相关资源
      最近更新 更多