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

Django项目OperationalError:app_orderitem.rent列不存在问题咨询

解决Django中「OperationalError: no such column: app_orderitem.rent」错误

问题描述

我刚创建了一个Django项目,其中包含多个模型,OrderItem模型带有rent字段。但无法通过/admin进入OrderItem选项,也无法创建OrderItem,项目初始无数据,出现「OperationalError at /admin/app/orderitem/ no such column: app_orderitem.rent」错误。

相关代码

models.py

class OrderItem(models.Model):
    customer = models.ForeignKey(
        User, on_delete=models.SET_NULL, null=True, blank=False)
    product = models.ForeignKey(
        Product, on_delete=models.SET_NULL, blank=True, null=True)
    order = models.ForeignKey(
        Order, on_delete=models.SET_NULL, null=True, blank=False)
    rent = models.BooleanField(blank=False, null=False)
    date_ordered = models.DateField(auto_now_add=True, blank=True)
    date_rented = models.DateField(null=True, blank=True)
    date_returned = models.DateField(null=True, blank=True)
    date = models.DateField(auto_now_add=True)

    def __str__(self):
        return str(self.product) + " Order: (" + str(self.order)+")"

serializer.py

class orderItemSerializers(serializers.ModelSerializer):
    class Meta:
        model = OrderItem
        fields = '__all__'

views.py

@api_view(['GET', 'POST'])
def getOrderItemData(request):
    if request.method == 'GET':
        item = OrderItem.objects.all()
        serializer = orderItemSerializers(item, many=True)
    if request.method == 'POST':
        print(request.data)
        serializer = orderItemSerializers(data=request.data)
        if serializer.is_valid():
            serializer.save()
    return Response(serializer.data)

问题原因

核心原因很直接:你在代码里给OrderItem模型加了rent字段,但这个变更没有同步到数据库,数据库里的app_orderitem表根本不存在rent这一列,Django查询时找不到对应列就会抛出这个错误。

解决步骤

  1. 生成迁移脚本
    打开项目根目录的终端,执行命令:

    python manage.py makemigrations
    

    这一步会扫描模型的变化,生成对应的迁移文件,记录「新增rent字段」这个操作。

  2. 同步变更到数据库
    接着执行迁移命令,把模型变更实际应用到数据库:

    python manage.py migrate
    

    执行完成后,数据库里的app_orderitem表就会新增rent列。

  3. 重启开发服务器(建议)
    如果你的服务是用python manage.py runserver启动的,重启一下服务器,确保Django加载最新的模型和数据库结构。

额外注意点

  • 要是执行makemigrations没生成迁移文件,检查两个关键点:
    • 你的app有没有添加到settings.py的INSTALLED_APPS列表中
    • 模型文件有没有保存,有没有语法错误
  • 每次修改模型字段后,都必须走「makemigrations → migrate」的流程,Django不会自动同步代码变更到数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:14:53