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

Django报no such column: Homepage_goods.number_text错误 模板渲染字段失败

报错原因
  • 核心触发逻辑是Django ORM在查询Goods模型对应的数据表Homepage_goods时,找不到名为number_text的列。
  • 你在IndexView中定义的number等方法属于视图类的方法,不会绑定到Goods模型实例上,模板调用{{good.number_text}}是读取模型实例的属性,和视图类的自定义方法无关。
  • 可能是你未在Goods模型中定义number_text字段,或是新增字段后没有执行迁移命令同步到数据库。
  • 也可能是模板调用的字段名和模型内实际定义的字段名不匹配,比如模型内字段是number,模板错写为number_text。
解决方案

方案1:模型新增字段(推荐)

  1. 打开models.py中的Goods模型定义,补全对应的字段,示例如下:
from django.db import models

class Goods(models.Model):
    # 原有其他字段保留
    number_text = models.CharField(max_length=100, verbose_name="商品编号")
    description_text = models.TextField(verbose_name="商品描述")
    price_text = models.CharField(max_length=50, verbose_name="商品价格")
  1. 执行迁移命令同步字段到数据库:
python manage.py makemigrations
python manage.py migrate
  1. 删除IndexView中无用的三个自定义方法即可,模板可以直接读取模型字段值。

方案2:动态给实例加属性(不需要修改数据库时使用)

如果不需要持久化存储number_text等字段值,可以重写get_queryset方法动态赋值,示例如下:

class IndexView(generic.ListView):
    template_name = 'Homepage/index.html'
    model = Goods
    context_object_name = 'goods'

    def get_queryset(self):
        goods_list = super().get_queryset()
        for good in goods_list:
            # 此处替换为你自己的属性生成逻辑
            good.number_text = f"NO.{good.id}"
            good.description_text = good.desc # 可以从已有字段取值
            good.price_text = f"¥{good.price}"
        return goods_list

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:24:01