迁移期间的 Django 问题 - 懒惰的参考

     2023-02-24     188

关键词:

【中文标题】迁移期间的 Django 问题 - 懒惰的参考【英文标题】:Django issue during migrations - lazy reference 【发布时间】:2017-07-24 11:29:16 【问题描述】:

我目前将此模型添加到我的应用中

from mainApp.models import modelPatient

class modelBodyParts(models.Model):
    part_name             = models.CharField(max_length=1000, unique=False , default="")
    modelPatient          = models.ForeignKey(modelPatient)
    result                = models.CharField(max_length=3000, unique=False , default="")

现在 makemigrations 和 migrate 命令给我以下错误

 >>python manage.py makemigrations 
 >>python ./manage.py migrate

ValueError: The field interviewApp.modelInterviewAnswers.patients was declared with a lazy reference to 'mainApp.modelpatients', but app 'mainApp' doesn't provide model 'modelpatients'

我不确定这意味着什么。但我确实记得在某一时刻mainApp.modelpatients 存在,然后它被更改为mainApp.modelpatient 仍然存在。我该如何解决这个问题,为什么会出现?任何帮助将不胜感激。

【问题讨论】:

问题解决了吗? 【参考方案1】:

对我来说,发生了这个错误,因为我正在从

交换一个 ForeignKey 模型
my_field = models.ForeignKey('old.model', ...)

my_field = models.ForeignKey('new.model', ...)

解决方案是手动编辑生成的迁移,并将来自 new 应用的最新迁移添加为依赖项:

class Migration(migrations.Migration):
    dependencies = [
        ('old', '0016_whatever'),
        ('new', '0002_latest_migration'),   # Add this line
    ]

【讨论】:

我在尝试撤消跨应用添加的ForeignKey 时遇到了@JamesFranco 的相同错误,您的解决方案有所帮助。 Django 的自动迁移并没有在dependencies 中列出第二个应用程序,所以我不得不手动添加它【参考方案2】:

尝试使用RenameModelRenameField。在这里查看答案:https://***.com/a/26241640/57952

【讨论】:

【参考方案3】:

我刚刚在最新的 django 上再次遇到了这个问题。共享模型已重命名(但移至新应用),问题是它未能选择一个引用它的其他应用。

我不明白为什么只有一个应用有问题,而其他应用却没有。最初的 makemigraitons 很好,所以只需将它添加到它创建的迁移文件中。之后,对makemigrations 的后续调用返回“未检测到更改”,应该是这样。

# Generated by Django 3.2.5
from django.db import migrations

class Migration(migrations.Migration):
    dependencies = [
        # all the following apps were correctly added as dependencies
        ('supplier',  '0001_initial'),
        ('marketing', '0004_add_some_field'),
        ('devops',    '0002_fix_some_model'),
        ('sales',     '0001_initial'),
        ('warehouse', '0010_set_trained'),
        ('products',  '0005_change_sku_format'),
        ('search',    '0003_remove_bad_data'),

        # Manually add this one, for the app that was missed
        ('left_out',  '0007_change_name'),
    ]

    operations = [
        migrations.RenameModel(
            old_name='OldModelName',
            new_name='NewModelName',
        ),
    ]

【讨论】:

【参考方案4】:

只需删除以前的迁移文件,一旦对模型进行了新的更改以相互继承,最好删除旧的迁移,然后执行新的“makemigrations”

【讨论】:

好的,让我们试试核选项

在测试期间更改 Django 迁移应用程序的顺序

】在测试期间更改Django迁移应用程序的顺序【英文标题】:ChangetheorderinwhichDjangomigrateappduringtesting【发布时间】:2015-06-3004:28:17【问题描述】:我正在使用从AbstractBaseUser类继承的自定义用户模型。当我尝试在makemigrations命令后迁... 查看详情

如何在南迁移期间调用 django 模型类的静态方法

】如何在南迁移期间调用django模型类的静态方法【英文标题】:Howtocallastaticmethodsonadjangomodelclassduringasouthmigration【发布时间】:2011-03-1920:31:30【问题描述】:我正在南方编写数据迁移,以修复我在早期代码中搞砸的一些非规范化... 查看详情

Django 模型外键字段在测试期间的迁移中不可用

】Django模型外键字段在测试期间的迁移中不可用【英文标题】:Djangomodelforeignkeyfieldisnotavailableinmigrationsduringtests【发布时间】:2021-08-0610:35:02【问题描述】:我有这个模型。classTransportOrder(SomeMixin,models.Model):order=models.ForeignKey(to="... 查看详情

.env 文件中的环境变量在 django、heroku 的本地迁移期间不可用

】.env文件中的环境变量在django、heroku的本地迁移期间不可用【英文标题】:Environmentalvariablesfrom.envfilenotavailableduringlocalmigrationsindjango,heroku【发布时间】:2016-11-2102:06:15【问题描述】:我一直在Heroku上进行开发,使用config变量来... 查看详情

Django 在迁移期间要求默认值

】Django在迁移期间要求默认值【英文标题】:Djangoaskingfordefaultvalueduringmigration【发布时间】:2020-07-2600:19:50【问题描述】:我有以下型号:title=models.CharField(max_length=100)description=models.TextField()date_posted=models.DateTimeField(default=timezo 查看详情

属性名称更改期间的 CoreData 迁移问题

】属性名称更改期间的CoreData迁移问题【英文标题】:CoreDatamigrationissueduringattributenamechanges【发布时间】:2015-05-2606:41:04【问题描述】:我需要在coredataios中更改实体的属性名称。我希望轻量级迁移它而不会崩溃。我通过参考迁... 查看详情

Django 形式的懒惰选择

】Django形式的懒惰选择【英文标题】:LazychoicesinDjangoform【发布时间】:2010-10-0820:30:57【问题描述】:我有一个这样的Djangomy_forms.py:classCarSearchForm(forms.Form):#lotsoffieldslikethisbodystyle=forms.ChoiceField(choices=bodystyle_choices())每个选择都... 查看详情

迁移回滚期间无法从其他应用导入 Django 模型

】迁移回滚期间无法从其他应用导入Django模型【英文标题】:UnabletoimportDjangomodelfromtheotherappduringmigrationroll-back【发布时间】:2018-07-0715:27:29【问题描述】:我正在为new_app创建一个数据迁移,并有可能将其回滚。#Thisis`new_app`migrat... 查看详情

在 Django 中使迁移有条件

】在Django中使迁移有条件【英文标题】:MakeMigrationConditionalinDjango【发布时间】:2015-10-2803:21:53【问题描述】:具体用例是:ADjangomodule想在迁移期间创建扩展。如果用于运行迁移的数据库用户不是超级用户,这失败。有几种方法... 查看详情

在 Core Data 迁移期间添加关系 - 自我参考

】在CoreData迁移期间添加关系-自我参考【英文标题】:AddingrelationsduringaCoreDatamigration–selfreference【发布时间】:2015-03-2001:38:58【问题描述】:我正在使用mappingmodel执行核心数据迁移。新模型在名为rootReport的Report实体上添加了一... 查看详情

重新运行 Django 数据迁移

】重新运行Django数据迁移【英文标题】:RerunaDjangodatamigration【发布时间】:2015-11-0409:01:42【问题描述】:如何在Django1.8+上重新运行数据迁移?如果相关,我的迁移编号为0011_my_data_migration.py,是最新的迁移。【问题讨论】:请注... 查看详情

django 在服务器上的 syncdb 期间出错

...问题描述】:我有一个完整的localedjango应用程序,但是在迁移到site5服务器时遇到了问题。当我启动django的syncdb命令时,我的所有模型的表都已创建,但是(我猜它是在创建关系表时),我收到以下错误:_mysql_exceptions.Ope 查看详情

在 Django 迁移期间收到“ValueError: Found wrong number of (0) of constraint for ...”

】在Django迁移期间收到“ValueError:Foundwrongnumberof(0)ofconstraintfor...”【英文标题】:Received"ValueError:Foundwrongnumber(0)ofconstraintsfor..."duringDjangomigration【发布时间】:2017-05-2804:05:34【问题描述】:在使用Django1.7迁移时,我遇到了... 查看详情

如何通过 Django 迁移执行 git 命令?

】如何通过Django迁移执行git命令?【英文标题】:HowtoexecutegitcommandthroughDjangomigration?【发布时间】:2018-05-0518:21:30【问题描述】:我需要在Django迁移中执行git命令。我需要通过Django迁移清除目录的内容,因为我们无法直接访问生... 查看详情

耳部部署期间的飞路迁移

】耳部部署期间的飞路迁移【英文标题】:Flywaymigrationduringeardeployment【发布时间】:2011-08-3107:06:07【问题描述】:如果Flyway可以在部署.ear工件(JBoss4.2)期间迁移我们的数据库,我们会很高兴。如果出现任何问题,它应该中止。使... 查看详情

在 django 1.8 中部署期间提供媒体文件

...jango应用程序。所有静态文件均由whitenoise提供服务并成功迁移。但是如何让我使用ImageField上传的媒体文件在制作期间显示。我的settings.pySTATIC_URL=\' 查看详情

在数据迁移期间删除实体中的所有记录

】在数据迁移期间删除实体中的所有记录【英文标题】:Droppingallrecordsinentityduringdatamigration【发布时间】:2015-09-0818:45:47【问题描述】:我想知道是否有人在核心数据自定义迁移期间尝试过删除数据记录。由于数据迁移功能的初... 查看详情

如何在 django 迁移中执行原始 SQL

】如何在django迁移中执行原始SQL【英文标题】:HowdoIexecuterawSQLinadjangomigration【发布时间】:2015-10-2007:05:33【问题描述】:我知道Django中的光标对象。在迁移中是否有其他首选方式来执行原始SQL?我想为我的一个模型表引入postgres... 查看详情