#django #django-rest-framework
#django #django-rest-framework
Вопрос:
Я создал сериализатор, который «пользователь» ниже, из другого сериализатора, который я импортировал, теперь импортированный сериализатор (PubliceProfileSerializer) отлично работает сам по себе, но он не отображает содержимое ПОЛЬЗОВАТЕЛЯ, когда я вызываю его своим браузером из этого сериализатора. Отображается любой другой элемент, кроме пользователя. Пожалуйста, помогите
from rest_framework import serializers
from users.api.serializers import PublicProfileSerializer
from blog.models import Post
class PostSerializer(serializers.ModelSerializer):
user = PublicProfileSerializer(source='users.profile', read_only=True)
category = serializers.SerializerMethodField()
label = serializers.SerializerMethodField()
class Meta:
model = Post
fields = '__all__'
def get_category(self, obj):
return obj.get_category_display()
def get_label(self, obj):
return obj.get_label_display()
Ответ №1:
Добавьте ваш сериализатор в список полей. Заменить
fields = '__all__'
с
fields = ('id', 'user', 'category', 'label')
потому что:
fields = '__all__'
будет только заполняться id
category
и label
из модели Post, но не будет предоставлять вложенный пользовательский сериализатор, поэтому он становится:
class Meta:
model = Post
fields = ('id', 'user', 'category', 'label')
или
class PostSerializer(serializers.ModelSerializer):
user = PublicProfileSerializer(many=False,
source='users.profile',
read_only=True)
category = serializers.SerializerMethodField()
label = serializers.SerializerMethodField()
class Meta:
model = Post
fields = ('id', 'user', 'category', 'label')
def get_category(self, obj):
return obj.get_category_display()
def get_label(self, obj):
return obj.get_label_display()
Комментарии:
1. [ { «id»: 47, «category»: «Музыка», «label»: «PopSocial» }, { «id»: 42, «category»: «Еда», «label»: «PopSocial» }, { «id»: 43, «category»:»Еда», «ярлык»: «PopSocial» } ] ….. это все, что я получаю, я не вижу там «пользователя»