django数据迁移-通过get_model()类变量不可用
我正在尝试使用以下迁移文件,通过Django数据迁移更新一些数据库记录:django数据迁移-通过get_model()类变量不可用,django,orm,django-migrations,Django,Orm,Django Migrations,我正在尝试使用以下迁移文件,通过Django数据迁移更新一些数据库记录: from django.apps import apps from django.db import IntegrityError, migrations def exclude_pending_drivers(apps, schema_edition): Driver = apps.get_model("team", "Driver") pending_drive
from django.apps import apps
from django.db import IntegrityError, migrations
def exclude_pending_drivers(apps, schema_edition):
Driver = apps.get_model("team", "Driver")
pending_drivers = Driver.objects.filter(type=Driver.PENDING)
for driver in pending_drivers:
driver.show_in_app = False
Driver.objects.bulk_update(pending_drivers, ['show_in_app'])
class Migration(migrations.Migration):
dependencies = [
('team', '0002_add_show_in_app_to_driver'),
]
operations = [
migrations.RunPython(exclude_pending_drivers),
]
运行时,我遇到一个错误:
AttributeError: type object 'Driver' has no attribute 'PENDING'
PENDING
定义为模型中的类变量:
class Driver(models.Model):
PENDING = 1
CONFIRMED = 2
show_in_app = models.BooleanField(default=True)
# etc
我可以在manage.py shell
中运行上述准确的迁移代码,而且如果我使用team.models导入驱动程序而不是apps.get_model(“团队”、“驱动程序”)
,它也可以正常运行(尽管显然不建议这样做)
有什么好处?它看起来像是驱动程序类,当它通过apps.get_model()
包含时,它与直接导入的不同,但肯定不是这样的