@turekulovass

Как вернуть в django rest framework json api вложенную сущность (по первичному ключу) из другой модели?

У меня есть две модели:
class Categories(models.Model):
    name_ru = models.TextField(null=True)
    name_kz = models.TextField(null=True)
    name_en = models.TextField(null=True)
    def __str__(self):
        return self.name_ru
    class Meta:
        db_table = 'categories'

class Theme(models.Model):   
    name = models.TextField(null = False)
    category = models.ForeignKey(Categories,on_delete=models.CASCADE, null = False)
    class Meta:
        db_table = 'theme'


serializers.py
class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Categories
        fields = ('__all__')

class ThemeSerializer(serializers.ModelSerializer):
    qs = Categories.objects.all()
    category = serializers.PrimaryKeyRelatedField(queryset=qs)
    class Meta:
        model = Theme
        fields = ('id', 'name', 'category')


Сейчас мне возвращает такой ответ:
{
            "type": "Theme",
            "id": "3",
            "attributes": {
                "name": "******"
            },
            "relationships": {
                "category": {
                    "data": {
                        "type": "Categories",
                        "id": "2"
                    }
                }
            }
        },

А нужно чтобы было так:
{
            "type": "Theme",
            "id": "3",
            "attributes": {
                "name": "***"
            },
            "relationships": {
                "category": {
                    "data": {
                        "type": "Categories",
                        "id": "2"
                        "name_ru": "Политика",
                        "name_kz": "Саясат",
                        "name_en": "Politics"
            }
                    }
                }
            }
        },
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AlexandrBirukov
может так:
class ThemeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Theme
        fields = ('id', 'name', 'category')
        depth = 1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы