Vzor migrace pro create
This commit is contained in:
		
							parent
							
								
									4182bd542e
								
							
						
					
					
						commit
						457236c21a
					
				
					 2 changed files with 53 additions and 0 deletions
				
			
		
							
								
								
									
										52
									
								
								split-apps-meta/create-ct-hack.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								split-apps-meta/create-ct-hack.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | |||
| # Správná migrace vypadá takto: | ||||
| # Generated by Django 3.2.23 on 2023-12-11 19:19 | ||||
| 
 | ||||
| def nastav_nove_contenttypes(apps, schema_editor): | ||||
|     ContentType = apps.get_model('contenttypes', 'ContentType') | ||||
|     old_ct = ContentType.objects.filter(app_label='seminar', model='nastaveni') | ||||
|     # Pozn: tohle může být prázdné (pokud Django nedostalo signál o dokončených migracích, např. při vyrábění databáze z nuly) | ||||
|     # Ale .update to nevadí… | ||||
|     old_ct.update(app_label='various') | ||||
| 
 | ||||
| def nastav_stare_contenttypes(apps, schema_editor): | ||||
|     ContentType = apps.get_model('contenttypes', 'ContentType') | ||||
|     new_ct = ContentType.objects.filter(app_label='various', model='nastaveni') | ||||
|     new_ct.update(app_label='seminar') | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     initial = True | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('seminar', '0115_alter_nastaveni_options'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.CreateModel( | ||||
|             name='Nastaveni', | ||||
|             fields=[ | ||||
|                 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||||
|                 ('cena_sous', models.IntegerField(default=1000, verbose_name='Účastnický poplatek za soustředění')), | ||||
|             ], | ||||
|             options={ | ||||
|                 'verbose_name': 'Nastavení semináře', | ||||
|                 'db_table': 'seminar_nastaveni', | ||||
|                 'managed': False, | ||||
|             }, | ||||
|         ), | ||||
|         migrations.RunPython(nastav_nove_contenttypes, nastav_stare_contenttypes), | ||||
|     ] | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #Hack: zkrácení | ||||
| def nastav_nove_contenttypes(apps, schema_editor): | ||||
|     ContentType = apps.get_model('contenttypes', 'ContentType') | ||||
|     for m in ('resitel', 'organizator', 'osoba', 'skola', 'prijemce'): | ||||
|         ContentType.objects.filter(app_label='seminar', model=m).update(app_label='personalni') | ||||
| 
 | ||||
| def nastav_stare_contenttypes(apps, schema_editor): | ||||
|     ContentType = apps.get_model('contenttypes', 'ContentType') | ||||
|     for m in ('resitel', 'organizator', 'osoba', 'skola', 'prijemce'): | ||||
|         ContentType.objects.filter(app_label='personalni', model=m).update(app_label='seminar') | ||||
| 
 | ||||
|  | @ -1,4 +1,5 @@ | |||
| Prostě zkopírovat vedle, s původními (=správnými) related names. | ||||
| makemigrations | ||||
| ! Doplnit hack kolem content-types | ||||
| doplnit závislost na unmanage | ||||
| migrate | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Pavel 'LEdoian' Turinsky
						Pavel 'LEdoian' Turinsky