django休息框架,不可序列化

时间:2017-12-05 10:56:30

标签: django django-rest-framework

我是使用django REST框架的新手,我无法导入团队成员列表

我的查询是

team_name_list = Project.objects.get(id=kwargs['pk1']).team_id.members.all()

给出一个输出:

<QuerySet [<MyUser: johndoe@gmail.com>, <MyUser: johndoe2@gmail.com>, <MyUser: johndoe3@gmail.com>, <MyUser: johndoe4@gmail.com>]>

问题是当我尝试在我的上下文中导入它时出现错误

Object of type 'MyUser' is not JSON serializable

我猜是因为我的查询输出应该是[&#34; johndoe@gmail.com",&#34; johndoe2@gmail.com",&#34; johndoe3@gmail.com& #34;&#34; johndoe4@gmail.com"]

如何让它发挥作用

编辑工作:使用序列化工具

我创建了我在视图中导入的serializer.py文件,所以现在我没有收到错误&#34;不能序列化&#34;但我的数据没有显示在我的端点或我的检查/控制台

我错过了什么?

from rest_framework.serializers import ModelSerializer

from registration.models import MyUser
from website.models import Team,Project

class MyUserSerializer(ModelSerializer):
    class Meta:
        model = MyUser
        fields = [
            'email',
            'first_name',
            'last_name'
        ]

观点:

来自website.serializers的

导入MyUserSerializer

我的观点与employee_detail_page.html

相关联
class EmployeeDetailView(generic.DetailView, LoginRequiredMixin):
    #import pdb; pdb.set_trace()
    model = MyUser
    template_name = 'Employee_Details.html'


    def get_object(self, queryset=None):
        return get_object_or_404(MyUser, pk=self.kwargs['pk2'], members__project=self.kwargs['pk1'])

    def get_context_data(self, **kwargs):
        context = super(EmployeeDetailView, self).get_context_data(**kwargs)
        employee_name = MyUser.objects.get(id=self.kwargs['pk2'])
        team_list = Project.objects.get(id=self.kwargs['pk1']).team_id.members.all()
        team_list_pop = Project.objects.get(id=self.kwargs['pk1']).team_id.members.all().exclude(id=self.kwargs['pk2'])
        context={
            'employee_name' : employee_name,
            'team_list' : team_list,
            'team_list_pop' : team_list_pop
        }
        return context

在模板中我使用chartJS和此视图包含dashboard.html

class EmployeeChartData(APIView):
    #import pdb; pdb.set_trace()
    authentication_classes = []
    permission_classes = []

    serializer_class = MyUserSerializer

    def get(self, request, format=None, *args, **kwargs):

        project_name = Project.objects.get(id=kwargs['pk1']).name
        team_name_list = Project.objects.get(id=kwargs['pk1']).team_id.members.all()
        serializer = self.get_serializer_class()
        team_name_data = serializer(team_name_list)
        team_member_count = Project.objects.get(id=kwargs['pk1']).team_id.members.count()
        main_items2 = [1,2,3,-4,5,6,-7,8,9,-10,-11,12,13,14,15,16]
        info_process_data = [4,6,2,8,4]
        info_process_data2 = [8,2,5,2,4]
        action_process_data = [5,3,9]
        motivation_data = [4,5,1,8]
        behaviour_data = [6,3,9,1]

        data = {
            #labels

            "labels_main_graph":labels_main_graph,
            "information_processing_label": information_processing_label,
            "action_process_label": action_process_label,
            "motivation_label": motivation_label,
            "behaviour_label":behaviour_label,
            #data

            "main2": main_items2,
            "info_process_data": info_process_data,
            "info_process_data2": info_process_data2,
            "action_process_data": action_process_data,
            "motivation_data":motivation_data,
            "behaviour_data":behaviour_data,
            #other
            "project_name":project_name,
            "team_member_count":team_member_count,
            "team_name_list":team_name_data

        }
        return Response(data)

1 个答案:

答案 0 :(得分:3)

在返回响应之前序列化您的team_name_list

    team_name_list = Project.objects.get(id=kwargs['pk1']).team_id.members.all()
    serializer = self.get_serializer_class()
    team_name_data = serializer(team_name_list)

然后在数据字典中:

    "team_name_list":team_name_data
相关问题