2016-02-27 6 views
3

Я создал следующий сериалайзер:Django REST корневой кортеж интерпретируется как строка?

class KeywordSerializer(serializers.HyperlinkedModelSerializer):  

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

Однако, когда я пытаюсь использовать его в режиме просмотра, я получаю следующее сообщение об ошибке:

The fields option must be a list or tuple or "__all__". Got str.

Но вопрос, поля являются кортеж. Я даже пытался установить его на все или список, но я получаю ту же ошибку. Такая же ошибка возникает независимо от имени поля.

Кто-нибудь знает, почему это происходит?

ответ

6

Да, в Python ('my_field')is a string. Для создания одноэлементного кортежа вам нужна запятая: ('my_field',).

Обратите внимание, что это не связано с DRF.

+1

Да, я идиот. Благодарю. – Cisplatin

+0

Для других пользователей интернет-поиска - то же самое также относится к 'read_only_fields', иначе вы получите ошибку' Опция 'read_only_fields' должна быть списком или кортежем. Got str.' – mseimys

+0

hah! Я иногда попадаюсь в дополнение к этой проблеме: оставляя конечную запятую в строке, выдает результат как кортеж .. doh! – ptim

Смежные вопросы