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

Django报错:codigo_cad期望数字类型却获取Customer对象求助

报错信息

Field 'codigo_cad' expected a number but got <Customer: 1>

问题根因

该报错和模型__str__方法返回字符串类型无关,本质是代码中给要求整数类型的codigo_cad字段传值时,传入了整个Customer模型实例,触发类型不匹配。
从已贴的代码可以定位到明确的错误点:视图层查询关联客户的写法不符合Django外键字段的取值规则。

# 错误代码片段
cliente = get_object_or_404(Customer,pk=venda.cliente_ven)

如果Venda模型的cliente_ven是指向Customer的外键字段,直接访问venda.cliente_ven返回的是关联的Customer模型实例,不是数据库中存储的整数字段值,把实例传给要求整数的pk参数自然会触发报错。

修复方法
  • 优先用外键字段的_id后缀取值,这是Django的原生设计,不会触发额外数据库联表查询,性能最优:
# 修正后代码
cliente = get_object_or_404(Customer, pk=venda.cliente_ven_id)
  • 全局排查所有涉及codigo_cad字段赋值、传参的位置,凡是传入Customer实例的地方,都改为取实例的对应属性值,即customer_obj.codigo_cad,禁止直接把整个模型实例传入字段。
无关代码说明

你贴出的模型层__str__、get_aniversario、get_customer_url、get_sale_customer_url方法本身逻辑没有问题,不需要调整,不用在这部分代码上消耗调试时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:54:17