int()参数必须是字符串,类似字节的对象或数字,而不是'object'

时间:2020-05-24 13:47:38

标签: django django-views

保存数据后,我只想选择V_insert_data并获取其ID。

我该如何解决这个问题?有什么想法吗?

 V_insert_data = StudentsEnrollmentRecord(
    .....
        )
    V_insert_data.save()

 enrollment = StudentsEnrollmentRecord.objects.filter(id = V_insert_data)

 return render("",{"enrollment":enrollment})

我得到这个错误

enter image description here

3 个答案:

答案 0 :(得分:2)

您可以尝试

enrollment = StudentsEnrollmentRecord.objects.filter(id = V_insert_dat.id)

答案 1 :(得分:1)

您不需要第二次获取对象。 V_insert_dat StudentEnrollmentRecord,因此您可以将其实现为:

V_insert_data = StudentsEnrollmentRecord.objects.create(
    # …
)
return render(request, '', {'enrollment': V_insert_data})

enrollment是单个StudentsEnrollmentRecord对象,因此您不应对其进行迭代。

如果id不是主键(可能不建议使用),则可以获取对象的.id,并确实在.filter(…)查询中传递该对象:< / p>

V_insert_data = StudentsEnrollmentRecord.objects.create(
    # …
)
enrollment = StudentsEnrollmentRecord.objects.filter(id=V_insert_data.id)
return render(request, '', {'enrollment': enrollment})

答案 2 :(得分:0)

该错误表明,在过滤器查询的参数中,您传递的是id而不是V_insert_data,实际上它是您在此处定义的StudentsEnrollmentRecord模型对象

V_insert_data = StudentsEnrollmentRecord(
   .....
       )

给一个属性,而不是给整个对象,例如id = V_insert_data.id。

enrollment = StudentsEnrollmentRecord.objects.filter(id = V_insert_data
.id)

此过滤器的作用与SQL语句 select 子句中的where / limit相同。

更新:

代替创建后的过滤查询,您还可以使用create&get的组合,如下所示:

https://stackoverflow.com/a/1821247/11979793