我只得到json格式的一列数据库

时间:2017-09-02 15:47:31

标签: python json django

我的模型被命名为Color有4列,即Name&背景颜色& H1颜色& P color.It就像 actual table

但是现在我只能以json格式获得数据库的一列(它是Name)。 就像

[
    {
        "task_name": "white"
    },
    {
        "task_name": "green"
    },
    {
        "task_name": "pink"
    }
]

我希望以json格式获取表的所有列,但为什么我不能这样做?

models.py

from django.db import models

# Create your models here.
class Color(models.Model):
    name = models.CharField(max_length=255)
    background_color = models.CharField(max_length=255)
    h1_color = models.CharField(max_length=255)
    p_color = models.CharField(max_length=255)

    def __str__(self):
        return self.name

serializers.py

from .models import Color
from rest_framework import serializers


class TaskSerializer(serializers.Serializer):
    task_name = serializers.CharField(max_length=100,source='name')

    class Meta:
        model = Color
        fields = ('name',
                  'background_color',
                  'h1_color',
                  'p_color',
                  'task_name')

views.py

from django.shortcuts import render
from .models import Color
from .forms import ColorForm
from .serializers import TaskSerializer
from rest_framework.views import APIView
from rest_framework.response import Response

from rest_framework import status
from rest_framework import generics

# Create your views here.
def index(request):
    d = {
        'colors': Color.objects.all(),
        'form': ColorForm(),
    }
    return render(request, 'index.html', d)

class TaskGet(generics.ListAPIView):
    serializer_class = TaskSerializer
    queryset = Color.objects.all()

我无法理解为什么名字可以得到,但其他人不能得到。在models.py,我辞去了所有元素。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

您在这里使用Serializer这就是为什么您只在json中获取一个字段的原因。您必须使用ModelSerializer

你必须使用

class TaskSerializer(serializers.ModelSerializer):