django rest_frameworks не получает данные - PullRequest
0 голосов
/ 05 января 2020

Я пытаюсь получить даты из моей базы данных моделей. Когда я запрашиваю получение всех объектов, отображается только {}.

Я хочу получить и опубликовать дату, используя django -restapi

Вот мой код:

Мой сериализатор:

from rest_framework import serializers
from .models import prediction_model


class predserializer(serializers.Serializer):

    class Meta:
        model = prediction_model
        field = '__all__'

моя модель:

from django.db import models


# Create your models here.

class prediction_model(models.Model):
    date = models.DateField()

    def meta(self):
        return self.date

my views.py:

from django.shortcuts import render
from rest_framework import status
from rest_framework.response import Response
from .models import prediction_model
from .serializers import predserializer

# Create your views here.
from rest_framework.decorators import api_view


def index(request):
    return render(request, 'homesite/index.html')


@api_view(['GET', 'POST'])
def get_date(request):
    if request.method == 'GET':
        prediction = prediction_model.objects.all()
        serializer = predserializer(prediction)
        return Response(serializer.data)


def post_date(request):
    if request.method == 'POST':
        serializer = predserializer(data=request.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED)

Ответы [ 2 ]

0 голосов
/ 05 января 2020

serializers.py файл должен быть:

from rest_framework import serializers
from .models import prediction_model


class predserializer(serializers.ModelSerializer):

    class Meta:
        model = prediction_model
        field = '__all__'

А в views.py должен быть:

from django.shortcuts import render
from rest_framework import status
from rest_framework.response import Response
from .models import prediction_model
from .serializers import predserializer

# Create your views here.
from rest_framework.decorators import api_view


def index(request):
    return render(request, 'homesite/index.html')


@api_view(['GET', 'POST'])
def get_date(request):
    if request.method == 'GET':
        prediction = prediction_model.objects.all()
        serializer = predserializer(prediction, many=True)
        return Response(serializer.data)


def post_date(request):
    if request.method == 'POST':
        serializer = predserializer(data=request.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED)
0 голосов
/ 05 января 2020

Вам необходимо наследовать от serializers.ModelSerializer

class predserializer(serializers.ModelSerializer):

И вам нужно передать many=True при передаче набора запросов в сериализатор

serializer = predserializer(prediction, many=True)
...