python - 将序列化程序方法字段添加到 generics.ListAPIView - Django
问题描述
我有一个模型,它的名字是 Permit。我的操作系统 windows 7 django 3.2 序列化程序类:
class PermitListSerializer(serializers.ModelSerializer):
def __init__(self,page=None, *args, **kwargs):
self.page = page
super().__init__(*args, **kwargs)
page_number = serializers.SerializerMethodField()
userfullname = serializers.SerializerMethodField()
show_subsystem = serializers.SerializerMethodField()
def get_show_subsystem(self,obj):
return obj.subsystem.name
def get_userfullname(self, obj):
return obj.issuer.get_full_name() if obj.issuer.get_full_name() else 'Unknown'
def get_page_number(self, obj):
return self.page
class Meta:
model = Permit
fields = '__all__'
我的观点:
class c_receive_tm(generics.ListAPIView):
serializer_class = PermitListSerializer
filter_backends=(filters.SearchFilter,)
search_fields=('name', 'description')
def get_queryset(self):
return Permit.objects.all().order_by('-id')
我得到一个错误:
TypeError at /api/receive_tm/
Object of type Permit is not JSON serializable
Request Method: GET
Request URL: http://127.0.0.1:8000/api/receive_tm/
Django Version: 3.2.6
Exception Type: TypeError
Exception Value:
Object of type Permit is not JSON serializable
如果我删除所有 SerializerMethodField 它的作品我需要这个附加字段
解决方案
推荐阅读
- android - Firebase 身份验证:来自此 Android 客户端应用程序 com.xxx 的请求被阻止
- php - GNU emacs 的 PHP 模式未列为 MELPA 包
- ruby - 在 Ruby 中通过十六进制字符串获取 unicode
- outlook-addin - Office.context.roamingSettings.saveAsync 函数在使用 Dialog API for Office 加载项时出错
- php - 如何使用ajax将javascript变量值传递给php变量以存储在codeighter的会话中
- angular - 如何在角度 2 中为我的模态弹出窗口设置宽度和高度
- php - 从facebook登录最近没有得到位置字段
- node.js - node.js请求模块getaddrinfo错误
- python - 如何解决这个程序在运行市场订阅线程将数据插入到 mongodb 时自动终止的问题?
- php - 如果数据为空,我如何在查询中使用计数来计数 0