【发布时间】:2016-02-02 20:12:31
【问题描述】:
假设你有一个 Django 模型:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
然后你将它迁移到:
from django.db import models
class Person(models.Model):
both_names = models.CharField(max_length=30)
您可能会为这种情况编写数据迁移(或我的,不是上述情况,但与问题相似且不可信)并且您肯定想对其进行测试。
我使用 call_command('migrate', app, state) 将数据库回滚到旧状态,然后我想我只需使用 Person 的历史 ORM 来实例化一些 Person 对象,然后进行迁移,然后进行一些断言检查我的数据迁移是否正常。
在South 中,您只需通过Migration 调用旧的ORM。在Django 1.8 中如何做到这一点?
我的策略基于此文档:https://micknelson.wordpress.com/2013/03/01/testing-django-migrations/
我希望找到 Django 的 historic-models 的实现:https://docs.djangoproject.com/en/1.8/topics/migrations/#historical-models
重申这个问题 - 我将如何获得 Person 的“旧”状态,以便创建一个像这样的人:Person(first_name='bob', last_name='jones') - 用于测试目的。
【问题讨论】:
标签: python django orm django-south