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

Django 3.2报错OperationalError:home_atliktas_darbas.bendrija_id列不存在求修复

修复Django外键关联模型的OperationalError

针对你创建Atliktas_Darbas模型时遇到的OperationalError,结合你提供的代码,按以下步骤排查修复:

1. 确认关联模型的迁移状态

  • 执行命令查看迁移应用情况:
    python manage.py showmigrations
    
    找到Bendrija模型所在的app,检查对应迁移项是否有[X]标记(表示已应用)。
  • 如果Bendrija未迁移,先执行:
    python manage.py makemigrations
    python manage.py migrate
    
    确保Bendrija对应的数据库表已创建。

2. 检查模型导入与定义顺序

  • 确保Atliktas_Darbas所在的models.py中正确导入Bendrija:
    同app内导入:
    from .models import Bendrija
    
    跨app导入:
    from your_other_app.models import Bendrija
    
  • 若两个模型在同一文件中,确保Bendrija的定义在Atliktas_Darbas之前。

3. 验证数据库表与约束

  • 直接查看数据库(如SQLite浏览器、pgAdmin等),确认appname_bendrija表存在,且Atliktas_Darbas对应的表中bendrija_id外键字段及约束正常。
  • 若Bendrija表不存在,说明迁移执行失败,检查迁移时的终端报错信息(比如权限不足、字段冲突等)。

4. 重置迁移文件(可选)

如果之前修改过迁移文件导致依赖混乱,可按以下步骤重置:

  1. 备份数据库(重要!)
  2. 删除对应app下migrations文件夹中除__init__.py外的所有文件
  3. 重新生成并应用迁移:
    python manage.py makemigrations
    python manage.py migrate
    

你提供的模型代码

Bendrija模型:

class Bendrija(models.Model):

    class Meta:
        verbose_name_plural = 'Bendrijos'

    name = models.CharField(max_length=254)
    address = models.CharField(max_length=254, null=True, blank=True)

    def __str__(self):
        return self.name

Atliktas_Darbas模型:

class Atliktas_Darbas(models.Model):

    class Meta:
        verbose_name_plural = 'Atlikti Darbai'

    bendrija = models.ForeignKey(Bendrija, on_delete=models.CASCADE,
                                 related_name="atliktas_darbas")
    pavadinimas = models.CharField(max_length=254)
    aprasymas = models.CharField(max_length=254, null=True, blank=True)
    preliminari_kaina = models.CharField(max_length=254)
    galutine_kaina = models.CharField(max_length=254, null=True, blank=True)
    atlikti_iki = models.DateField()
    darbas_atlikas = models.DateField(null=True, blank=True)
    pastabos = models.CharField(max_length=254, null=True, blank=True)

    def __str__(self):
        return self.pavadinimas

内容的提问来源于stack exchange,提问作者Sir.Breezy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:01:23