@mrkovalchuk
Junior developer

Как в django-rest Serializator получить список определенных моделей?

Доброго времени суток.

Задача: получить все объекты в другом сериализаторе. Понятнее в коде:

Есть кастомный сериализатор
class TestSerializer(Serializer):
    type = PrimaryKeyRelatedField(queryset=Type.objects.all(),many=True)


Есть вот такая модель:
class Type(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4)
    name = models.CharField(null=True, max_length=255)

    def __str__(self):
        return self.name


И есть её сериализатор:
class TypeSerializer(ModelSerializer):
    class Meta:
        model = Type
        fields = '__all__'


В базе созданы два объекта соответствующей модели.
Код вывода:
@api_view(['GET', 'POST'])
def test(request):
    if request.method == 'GET':
        serializer = TestSerializer()
        return Response(serializer.data)
...


На выходе получаю:
{
  "type": [],
}


Вопрос, почему не выводятся эти две записи из БД?
  • Вопрос задан
  • 742 просмотра
Пригласить эксперта
Ответы на вопрос 1
1) TypeSerializer нигде не вызывается. Откуда Django знает, что вы хотите его использовать?
2) См. документацию. Вам надо, мне кажется, nested relationship. www.django-rest-framework.org/api-guide/relations/...
3) serializator - ну зачем ужас такой? На русском "сериализатор". На английском "serializer". И никак иначе.
4) Лучше уходить от views в виде функций сразу и навсегда. Используйте class based views.
5) Учитывая, что вы используете DRF и она предоставляет множество классов для этого начиная от APIView. А ещё такие удобные штуки как viewsets и routers.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы