У меня есть следующее data migration
from django.db import migrations, models
def gen_str(apps, schema_editor):
Donation = apps.get_model('donation', 'Donation')
Donation.objects.filter(payment_method_id__isnull=True).update(payment_method_id='')
class Migration(migrations.Migration):
dependencies = [
('donation', '0006_auto_20200129_0942'),
]
operations = [
migrations.RunPython(gen_str, reverse_code=migrations.RunPython.noop),
migrations.AddField(
model_name='donation',
name='payment_intent_id',
field=models.CharField(blank=True, default='', max_length=256),
),
Как проверить функцию gen_str
?
Я пробовал это:
class DataMigrationTests(TestCase):
def test_gen_str(self):
migrations.AlterField(
model_name='donation',
name='payment_intent_id',
field=models.CharField(blank=True, null=True, default='', max_length=256),
)
DonationFactory.create_batch(7, payment_method_id=None)
data_migration.gen_str(apps, connection.schema_editor())
payment_ids = Donation.objects.values_list('payment_method_id', flat=True)
print(payment_ids)
self.assertTrue(payment_ids, '')
Но получил ошибку django.db.utils.IntegrityError: Null value in column "payment_method_id"
на линии DonationFactory.create_batch(7, payment_method_id=None)