You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django插入操作报错:TypeError: int()参数类型错误咨询

解决Django插入操作中的TypeError: int() argument must be a string, bytes-like object or number, not 'DeferredAttribute'

嘿,这个错误我太熟悉了!基本上可以确定是你在创建模型实例的时候,错误地引用了模型类的字段(比如User.id),而不是当前用户实例的实际字段值(比如current_user.id)。

Django里,当你直接通过模型类访问字段(比如User.id)时,得到的不是具体的数值,而是一个叫DeferredAttribute的字段描述对象。当你把这个对象传给需要整数的字段(比如外键关联的user字段),Django尝试把它转成int的时候就会炸出这个错误。

结合你给出的视图代码片段,我猜你的代码大概是这样的(补全了你没写完的部分):

class BanqueViews(FormView):
    def get(self, request,*args,**kwargs):
        if request.user.is_active :
            current_user = request.user
            # 错误写法:用了User.id而不是current_user.id
            banque = Banque(user=User.id, some_field=...)
            banque.save()

给你两种修复方式,推荐第一种:

class BanqueViews(FormView):
    def get(self, request,*args,**kwargs):
        if request.user.is_active :
            current_user = request.user
            # 方式1:直接传用户实例,Django会自动处理外键关联
            banque = Banque(user=current_user, some_field=...)
            # 方式2:如果必须传ID,就用实例的id属性
            # banque = Banque(user_id=current_user.id, some_field=...)
            banque.save()

另外,如果是其他字段出现这个问题,你也照着这个思路排查:检查是不是把模型类的字段(比如Banque.amount)当成具体值传入了,而不是实际的变量或数值。

要是还解决不了,可以把完整的模型定义和保存实例的代码贴出来,我再帮你揪问题~

内容的提问来源于stack exchange,提问作者Elroum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:39:08