2015-11-08 3 views
0

Я делаю простой вид списка, где ток возвратного выглядит так -Джанго рамки остальное имя возвращение сериализатору не целое

[ 
    { 
     "name": "John", 
     "description": "John's Group", 
     "owner": 1 
    } 
] 

Проблема заключается в том, я не хочу, чтобы целое число, я хочу, чтобы это показать, как это -

[ 
    { 
     "name": "John", 
     "description": "John's Group", 
     "owner": "John Smith" 
    } 
] 

единственный способ обойти это, я нашел это сделать сериалайзер как это -

class ClassListSerializer(serializers.ModelSerializer): 
    ownername = serializers.CharField(source='owner.username') 
    class Meta: 
     model=ClassList 
     fields = ('name', 'description', 'ownername') 

T проблема в том, что я не хочу менять поле на ownername.

Установка следующих в модели работает для традиционных запросов модели -

def __str__(self): 
    return self.username 

Но я думаю, потому что ФПИ читает иначе не прилипает к отображению ForeignKey и вернуться?

Делать это не работает, потому что он пытается переопределить owner с owner, что уже существует -

class ClassListSerializer(serializers.ModelSerializer): 
    owner = serializers.CharField(source='owner.username') 
    class Meta: 
     model=ClassList 
     fields = ('name', 'description', 'owner') 

Так как я могу получить его, чтобы отобразить имя вместо целого числа?

ответ

2

SlugRelatedField именно то, что вы ищете:

class ClassListSerializer(serializers.ModelSerializer): 
    owner = serializers.SlugRelatedField(
     slug_field='username', 
     queryset=User.objects.all()) 
    class Meta: 
     model=ClassList 
     fields = ('name', 'description', 'owner') 
+0

я узнал в моих лет у меня проблемы с RTFM. Спасибо за это именно то, что я хотел! – whoisearth

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