Почему 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 при аутентификации, то проблем быть не должно.