Почему API Django возвращает пустой массив

Я разрабатываю веб-приложение с использованием Django, но не получаю желаемых результатов, API Django возвращает пустой массив ([]). Вот класс сериализатора, с помощью которого я пытаюсь получить данные места ->

from rest_framework import  serializers
from . import models

class PlaceSerializer(serializers.ModelSerializer):
  class Meta:
    model = models.Place
    fields = ('id', 'name', 'image')

Виды ->

from rest_framework import generics
from .import models, serializers

# Create your views here.


class PlaceList(generics.ListCreateAPIView):
    serializer_class = serializers.PlaceSerializer

    def get_queryset(self):
        return models.Place.objects.filter(owner_id=self.request.user.id)
    # Only the owner can create or make changes on the places

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)

Я думаю, что это связано с тем, как вы написали свой набор запросов. Если предположить, что ваша модель Place имеет поле owner, которое является внешним ключом к модели User, вам следует настроить вашу модель get_queryset следующим образом:

def get_queryset(self):
    return models.Place.objects.filter(owner__id=self.request.user.id)  # notice the double underscore in owner__id

Или вы можете просто записать это как:

def get_queryset(self):
    return models.Place.objects.filter(owner=self.request.user)

Вы уверены, что вызываете api при аутентификации? Потому что, насколько я могу судить, в ваших кодах нет проблем. Когда вашему представлению нужна аутентификация, вам нужно назначить классы разрешений (если вы не установили классы разрешений по умолчанию в settings.py). Я считаю, что если вы вызываете api при аутентификации, то проблем быть не должно.

Вернуться на верх