Как с помощью Django REST Framework настроить формат возвращаемого json'а так, чтобы выводились названия элемента, а не его primary key?
У меня есть модель User из django.contrib.auth.models и модель Habit, описанная следующим образом
from django.db import models
class Habit(models.Model):
habit_name = models.CharField(max_length=100)
user = models.ForeignKey(User, related_name = 'habits', on_delete=models.CASCADE)
def __str__(self):
return self.habit_name
Также есть UserSerializer
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['username', 'habits']
Результатом работы GET /api/users/all будет вот такой json
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
[
{
"username": "maxon",
"habits": [
2,
3
]
},
{
"username": "user1",
"habits": []
}
]
Проблема в том, что в поле "habits" выводятся ключи привычек, а нужно, чтобы выводились их названия habit_name. Что для этого нужно сделать?
Ответы (1 шт):
Автор решения: Максим Фалеев
→ Ссылка
Мне помогло добавить habits = StringRelatedField() следующим образом
class UserSerializer(serializers.ModelSerializer):
habits = serializers.StringRelatedField(many=True)
class Meta:
model = User
fields = ['username', 'habits']