我是使用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)
答案 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