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

Django生产环境FieldDoesNotExist报错:pricing无price_per_hour字段

Django迁移报错:pricing.pricing has no field named 'price_per_hour'

生产服务器上重启Django或执行python manage.py makemigrations命令时出现如下错误:

django.core.exceptions.FieldDoesNotExist: pricing.pricing has no field named 'price_per_hour'

price_per_hour字段早已重命名为price,且当时迁移执行正常,但现在每次操作都会触发该错误,导致无法对任何应用的模型进行修改或执行迁移。

已完成的检查

  • 执行python manage.py showmigrations,所有迁移均标记为X,确认所有迁移已完成;
  • 所有Django应用/类中均未找到或使用price_per_hour字段,当前Pricing模型代码如下:
class Pricing(models.Model):
    
    price = models.DecimalField(default=5,max_digits=10, decimal_places=2)
    
    class Meta: 
        ordering = ['-price',]  
                                           
    def __str__(self):
       return "{}".format(self.price)
  • 导出当前数据库的SQL,可见表中仅存在price列,无price_per_hour字段及任何引用:
CREATE TABLE public.pricing_pricing (
    id integer NOT NULL,
    price numeric(10,2) NOT NULL,
);
  • 尝试将price字段改回price_per_hour,问题仍未解决。

推测错误源于Django而非PostgreSQL数据库,但无法确定。完整报错栈信息如下:

python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/makemigrations.py", line 141, in handle
    loader.project_state(),
  File "/usr/local/lib/python3.8/site-packages/django/db/migrations/loader.py", line 324, in project_state
    return self.graph.make_state(nodes=nodes, at_end=at_end, real_apps=list(self.unmigrated_apps))
  File "/usr/local/lib/python3.8/site-packages/django/db/migrations/graph.py", line 315, in make_state
    project_state = self.nodes[node].mutate_state(project_state, preserve=False)
  File "/usr/local/lib/python3.8/site-packages/django/db/migrations/migration.py", line 87, in mutate_state
    operation.state_forwards(self.app_label, new_state)
  File "/usr/local/lib/python3.8/site-packages/django/db/migrations/operations/fields.py", line 326, in state_forwards
    raise FieldDoesNotExist(
django.core.exceptions.FieldDoesNotExist: pricing.pricing has no field named 'price_per_hour'

目前已无其他排查思路,希望得到相关建议或解决方案。

附:曾考虑删除所有迁移文件后重新执行,但由于是生产服务器,担心丢失数据库内容或引发故障,相关命令如下:

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc"  -delete

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:25:29