Я наткнулся на ту же проблему.Так как я не нашел способа выполнить тестирование данных, я использовал утверждения для обнаружения поврежденных данных:
from django.conf import settings
class MyModel(models.Model):
stupid_error = models.BooleanField(default=False)
def __init__(self, *args, **kwargs):
super(MyModel, self).__init__(*args, **kwargs)
if settings.DEBUG:
assert not self.stupid_error
Хорошо, это немного неуклюже.Но, похоже, это работает.
[Edit] Подумав еще раз, я нашел гораздо лучшее решение: поместить тесты в сам DataMigration.Поскольку миграция является одноразовым кодом, ее не нужно проверять снова и снова.
class Migration(DataMigration):
def forwards(self, orm):
# lots of awesome migration code here
# ...
for m in orm.MyModel.objects.all():
assert not m.stupid_error