在进行South数据迁移时,如何访问Django模型的mixin方法?

2024-09-23 22:20:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Django模型有一个mixin,它提供了一个to_json方法:

class Tile(models.Model, SerializableMixin):
    flooring = models.ForeignKey('Flooring', related_name='tiles')
    ...

如何在数据迁移中访问它?在

^{pr2}$

Tags: todjango方法模型jsonmodelmodelsmixin
1条回答
网友
1楼 · 发布于 2024-09-23 22:20:57

我的解决方案是将orm模型转换为模型的实例,执行需要mixin的操作,并将结果保存到orm模型中。在

from apps.flooring.models import Tile

class Migration(DataMigration):
    def forwards(self, orm):
        tiles = orm.Tile.objects.filter(flooring__name="white")
        for tile in tiles:
            # Convert orm.Tile into Tile model to access serialization mixin
            t = Tile(**{k:v for (k,v) in t.__dict__.iteritems() if not k.startswith('_')})

            # update the orm.Tile model with new cache
            tile.cache = t.to_json()
            tile.save(update_fields=['cache'])

相关问题 更多 >