如何在数据迁移中访问模型的class级变量?
How to access model's class level variable in data migration?
这是我的模型。
Poll(models.Model):
title = models.CharField(max_length=1024)
MY_VAR = ['my_class_level_attribute'] # I want to access this
这是我的数据迁移:
def my_func(apps, schema_editor):
Poll = apps.get_model('my_app', 'Poll')
print Poll.MY_VAR
class Migration(migrations.Migration):
dependencies = [
('webmerge', '0012_previous_migration'),
]
operations = [
migrations.RunPython(my_func)
]
第print Poll.MY_VAR
行给出了一个属性错误。我认为问题可能出在 get_model
如何在数据迁移中执行,因为以下行在 Django shell:
中成功
In [2]: from django.apps import apps
In [3]: Poll = apps.get_model('my_app', 'Poll')
In [4]: Poll.MY_VAR
Out[4]: ['my_class_level_attribute']
您应该可以导入模型
from my_app.models import Poll
如果你这样做,你不应该删除 Poll
模型或 MY_VAR
属性,否则你的迁移将停止工作。
我认为您无法在迁移中访问模型方法。
我在这里 How to call a static methods on a django model class during a south migration
找到了答案
这是我的模型。
Poll(models.Model):
title = models.CharField(max_length=1024)
MY_VAR = ['my_class_level_attribute'] # I want to access this
这是我的数据迁移:
def my_func(apps, schema_editor):
Poll = apps.get_model('my_app', 'Poll')
print Poll.MY_VAR
class Migration(migrations.Migration):
dependencies = [
('webmerge', '0012_previous_migration'),
]
operations = [
migrations.RunPython(my_func)
]
第print Poll.MY_VAR
行给出了一个属性错误。我认为问题可能出在 get_model
如何在数据迁移中执行,因为以下行在 Django shell:
In [2]: from django.apps import apps
In [3]: Poll = apps.get_model('my_app', 'Poll')
In [4]: Poll.MY_VAR
Out[4]: ['my_class_level_attribute']
您应该可以导入模型
from my_app.models import Poll
如果你这样做,你不应该删除 Poll
模型或 MY_VAR
属性,否则你的迁移将停止工作。
我认为您无法在迁移中访问模型方法。 我在这里 How to call a static methods on a django model class during a south migration
找到了答案