python - 参数必须是 django rest 框架中的字符串?
问题描述
看这个我的过滤 请给我这个的解决方案,为什么这会显示这种类型的错误?
def create(self,request):
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
data = serializer.data
sub = data['subject_id']
sub_id = Subject.objects.filter(id=sub)
sec = data['section_id']
sec_id = Section.objects.filter(id=sec)
teacher = data['teacher_id']
teacher_id = Teacher.objects.filter(id=teacher)
if sub_id and sec_id and teacher_id:
TeacherSection.objects.get_or_create(section_id = sec_id.first(),
defaults={
'subject_id':sub_id.first(),
'teacher_id':teacher_id.first()
})
return Response(data)
else:
raise serializers.ValidationError({
'Detail':['Either Section Or Teacher Or Subject Not Exist']
})
else:
raise serializers.ValidationError({
'Detail':[serializer.errors]
})
错误是这样的。你能解释一下这是什么类型的错误吗
return int(value) TypeError: int() argument must be a string, a bytes-like object or a number, not 'Subject'
解决方案
期望类似subject_id
整数的对象。但是您正在传递sub_id.first()
which 是一个Subject
实例。
所以应该是
sub_id.first().id
我认为这种情况也适用于teacher_id
. (这取决于您如何定义模型)
推荐阅读
- java - VLOOKUP 错误:formulaparse 异常:当前工作簿中不存在指定的命名范围“lookup_name”
- database - 通过 SSH 密钥从本地计算机连接使用 docker 运行且未发布端口的远程数据库
- java - 如果引用变量设置为 null 是否仍会消耗内存?
- azure - 外部用户无法使用 azure Active Directory v2 连接登录?
- asp.net-mvc - 如何在引用的类库中获取 Asp.net MVC 路由信息?
- dialogflow-es - 谷歌助理帐号关联失败
- c - 如何从此函数中删除多个返回
- laravel - 尝试从数据库输出所有用户详细信息时出现找不到对象错误
- powershell - 使用 powershell 从 Net Use 命令中获取值
- python - Python:如何使用 UTF-8/Unicode 名称通过 Ftp 打开文件?