django rest框架,不可序列化
我是django REST框架的新手,在导入团队成员列表时遇到困难 我的问题是django rest框架,不可序列化,django,django-rest-framework,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>, <
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>]>
我猜是因为我的查询的输出应该是[”johndoe@gmail.com","johndoe2@gmail.com","johndoe3@gmail.com","johndoe4@gmail.com“]
我怎样才能让它工作
已编辑工作:使用序列化程序
我创建了在视图中导入的serializer.py文件,因此现在不会出现错误“not serializable”,但我的数据不会显示在端点或检查/控制台中
我错过了什么
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.serializer导入MyUserSerializer
我有一个链接到myemploye\u detail\u 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)
在返回响应之前,请序列化您的团队名称列表
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
在返回响应之前,请序列化您的团队名称列表
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
json.dumps({“email”:[i.email for i in team_name_list]})
您必须序列化查询结果才能获得json。通过DRF序列化[here]()@ParulDixit,您好,谢谢您的回答,我读了文档。。我排除了错误,但仍然看不到我的数据。。我用我的代码编辑了我的帖子,如果你能看一看的话;)@Ben2pop你可以分享你的视图代码。只是想知道你是如何呈现数据的。当然,我已经做到了thx:)json.dumps({“email”:[I.email for I in team_name_list]})
你必须序列化你的查询结果才能得到json。通过DRF序列化[here]()@ParulDixit,您好,谢谢您的回答,我读了文档。。我排除了错误,但仍然看不到我的数据。。我用我的代码编辑了我的帖子,如果你能看一看的话;)@Ben2pop您可以共享您的视图代码。只是想知道您是如何呈现数据的。当然,我已经完成了thx:)我想获取“EmployeeChartData”对象没有属性“get_serializer_class”get_serializer_class是获取相应序列化的方法。但是,您可以直接使用您定义的序列化程序的名称。您是否可以更清楚地说,我不确定如何使用get_serializer_类。事实上,我总是遇到错误:“ListSerializer”类型的对象不是JSONserializable@B我已经添加了一个获取“EmployeeChartData”对象没有属性的命令“get_serializer_class”get_serializer_class是获取相应序列化的方法。但是,您可以直接使用您定义的序列化程序的名称。您是否可以更清楚地说,我不确定如何使用get_serializer_类。事实上,我总是遇到错误:“ListSerializer”类型的对象不是JSONserializable@B我补充说