我正在编写django迁移操作,以更改“默认”数据库中的某些数据。我的应用可以访问“服务”数据库,其中包含我无法更改的数据。
default.table中的两个相关字段是:
data_sets_to_remove = models.CharField(blank=True, null=False, max_length=100, default="")
data_sets_new = ArrayField(models.IntegerField(null=True, blank=True), null=True, blank=True)
即我正在将数据从data_sets_to_remove迁移为新格式,然后添加到data_sets_new中。为此,我需要在迁移操作中访问“服务”数据库中的数据。
def forwards_func(apps, schema_editor):
DataRelease = apps.get_model('registry', "datarelease")
Survey = apps.get_model('registry', "survey")
data_release_queryset = DataRelease.objects.using('services').all().values('id', 'name', 'survey')
但是由于某种原因,在这种情况下,DataRelease模型上的外键字段“调查”不可用。
django.core.exceptions.FieldError:无法解析关键字“调查” 进入领域。选项包括:ID,名称
任何人都可以阐明这一点吗?我认为问题出在迁移操作中从辅助数据库访问数据的问题,但是如果我在控制台中运行相同的代码,它就可以正常工作...
服务数据库中的相关Survey和DataRelease模型:
class Survey(models.Model):
name = models.CharField(blank=False, null=False, max_length=100, unique=True)
class DataRelease(models.Model):
name = models.CharField(blank=False, null=False, max_length=100)
survey = models.ForeignKey(Survey, related_name='data_releases', on_delete=models.CASCADE)
答案 0 :(得分:1)
:facepalm:
答案盯着我。切换了关联模型的导入:
DataRelease = apps.get_model('registry', "datarelease")
Survey = apps.get_model('registry', "survey")
收件人:
from services.registry.models import DataRelease, Survey
现在,我可以在迁移操作中访问相关字段。希望这对以后的人有所帮助!