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. | Prostě zkopírovat vedle, s původními (=správnými) related names. | ||||||
| makemigrations | makemigrations | ||||||
|  | ! Doplnit hack kolem content-types | ||||||
| doplnit závislost na unmanage | doplnit závislost na unmanage | ||||||
| migrate | migrate | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Pavel 'LEdoian' Turinsky
						Pavel 'LEdoian' Turinsky