关键词:
【中文标题】迁移期间的 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】:
尝试使用RenameModel
和RenameField
。在这里查看答案: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... 查看详情