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) |
---|