| 1 | @skipUnlessDBFeature('supports_foreign_keys')
|
|---|
| 2 | def test_alter_field_reloads_state_on_fk_with_to_field_target_type_change(self):
|
|---|
| 3 | app_label = 'test_alflrsfkwtflttc'
|
|---|
| 4 | project_state = self.apply_operations(app_label, ProjectState(), operations=[
|
|---|
| 5 | migrations.CreateModel('Rider', fields=[
|
|---|
| 6 | ('id', models.AutoField(primary_key=True)),
|
|---|
| 7 | ('code', models.PositiveIntegerField(unique=True)),
|
|---|
| 8 | ]),
|
|---|
| 9 | migrations.CreateModel('Pony', fields=[
|
|---|
| 10 | ('id', models.AutoField(primary_key=True)),
|
|---|
| 11 | ('rider', models.ForeignKey('%s.Rider' % app_label, models.CASCADE, to_field='code')),
|
|---|
| 12 | ]),
|
|---|
| 13 | ])
|
|---|
| 14 | operation = migrations.AlterField(
|
|---|
| 15 | 'Rider',
|
|---|
| 16 | 'code',
|
|---|
| 17 | models.CharField(max_length=100, unique=True),
|
|---|
| 18 | )
|
|---|
| 19 | self.apply_operations(app_label, project_state, operations=[operation])
|
|---|
| 20 | id_type, id_null = [
|
|---|
| 21 | (c.type_code, c.null_ok)
|
|---|
| 22 | for c in self.get_table_description('test_alflrsfkwtflttc_rider')
|
|---|
| 23 | if c.name == 'code'
|
|---|
| 24 | ][0]
|
|---|
| 25 | fk_type, fk_null = [
|
|---|
| 26 | (c.type_code, c.null_ok)
|
|---|
| 27 | for c in self.get_table_description('test_alflrsfkwtflttc_pony')
|
|---|
| 28 | if c.name == 'rider_id'
|
|---|
| 29 | ][0]
|
|---|
| 30 | self.assertEqual(id_type, fk_type)
|
|---|
| 31 | self.assertEqual(id_null, fk_null)
|
|---|