ForeignKey -> OneToOne tam, kde dava smysl
V migraci navic TreeNody
This commit is contained in:
parent
23287d1cd0
commit
f92eeb8450
2 changed files with 188 additions and 10 deletions
178
seminar/migrations/0050_auto_20190510_2228.py
Normal file
178
seminar/migrations/0050_auto_20190510_2228.py
Normal file
|
@ -0,0 +1,178 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.11.20 on 2019-05-10 20:28
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('seminar', '0049_auto_20190430_2354'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='CisloNode',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Číslo (Node)',
|
||||||
|
'verbose_name_plural': 'Čísla (Node)',
|
||||||
|
'db_table': 'seminar_nodes_cislo',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ClanekNode',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('first_child', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.ClanekNode', verbose_name='první potomek')),
|
||||||
|
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.ClanekNode', verbose_name='kořen stromu')),
|
||||||
|
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.ClanekNode', verbose_name='další element na stejné úrovni')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Článek (Node)',
|
||||||
|
'verbose_name_plural': 'Články (Node)',
|
||||||
|
'db_table': 'seminar_nodes_clanek',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='KonferaNode',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('first_child', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.KonferaNode', verbose_name='první potomek')),
|
||||||
|
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.KonferaNode', verbose_name='kořen stromu')),
|
||||||
|
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.KonferaNode', verbose_name='další element na stejné úrovni')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Konfera (Node)',
|
||||||
|
'verbose_name_plural': 'Konfery (Node)',
|
||||||
|
'db_table': 'seminar_nodes_konfera',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='MezicisloNode',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('first_child', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.MezicisloNode', verbose_name='první potomek')),
|
||||||
|
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.MezicisloNode', verbose_name='kořen stromu')),
|
||||||
|
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.MezicisloNode', verbose_name='další element na stejné úrovni')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Mezičíslo (Node)',
|
||||||
|
'verbose_name_plural': 'Mezičísla (Node)',
|
||||||
|
'db_table': 'seminar_nodes_mezicislo',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='RocnikNode',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('first_child', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.RocnikNode', verbose_name='první potomek')),
|
||||||
|
('rocnik', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='seminar.Rocnik', verbose_name='ročník')),
|
||||||
|
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.RocnikNode', verbose_name='kořen stromu')),
|
||||||
|
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.RocnikNode', verbose_name='další element na stejné úrovni')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Ročník (Node)',
|
||||||
|
'verbose_name_plural': 'Ročníky (Node)',
|
||||||
|
'db_table': 'seminar_nodes_rocnik',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='TemaVCisleNode',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('first_child', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.TemaVCisleNode', verbose_name='první potomek')),
|
||||||
|
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.TemaVCisleNode', verbose_name='kořen stromu')),
|
||||||
|
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.TemaVCisleNode', verbose_name='další element na stejné úrovni')),
|
||||||
|
('tema', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Tema', verbose_name='téma v čísle')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Téma v čísle (Node)',
|
||||||
|
'verbose_name_plural': 'Témata v čísle (Node)',
|
||||||
|
'db_table': 'seminar_nodes_temavcisle',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='TextNode',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('first_child', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.TextNode', verbose_name='první potomek')),
|
||||||
|
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.TextNode', verbose_name='kořen stromu')),
|
||||||
|
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.TextNode', verbose_name='další element na stejné úrovni')),
|
||||||
|
('text', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Text', verbose_name='text')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Text (Node)',
|
||||||
|
'verbose_name_plural': 'Text (Node)',
|
||||||
|
'db_table': 'seminar_nodes_obsah',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='UlohaNode',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('first_child', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.UlohaNode', verbose_name='první potomek')),
|
||||||
|
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.UlohaNode', verbose_name='kořen stromu')),
|
||||||
|
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.UlohaNode', verbose_name='další element na stejné úrovni')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Úloha (Node)',
|
||||||
|
'verbose_name_plural': 'Úlohy (Node)',
|
||||||
|
'db_table': 'seminar_nodes_uloha',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='konfera',
|
||||||
|
name='reseni',
|
||||||
|
field=models.OneToOneField(blank=True, help_text='Účastnický přípěvek o konfeře', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='konfery', to='seminar.Reseni', verbose_name='článek ke konfeře'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='organizator',
|
||||||
|
name='osoba',
|
||||||
|
field=models.OneToOneField(help_text='osobní údaje organizátora', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='org', to='seminar.Osoba', verbose_name='osoba'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='reseni',
|
||||||
|
name='text_cely',
|
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reseni_cely_set', to='seminar.Text', verbose_name='Plná verze textu řešení'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='resitel',
|
||||||
|
name='osoba',
|
||||||
|
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Osoba', verbose_name='osoba'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='uloha',
|
||||||
|
name='vzorak',
|
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='uloha_vzorak_set', to='seminar.Text', verbose_name='vzorové řešení'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='uloha',
|
||||||
|
name='zadani',
|
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='uloha_zadani_set', to='seminar.Text', verbose_name='veřejné zadání'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='cislonode',
|
||||||
|
name='cislo',
|
||||||
|
field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='seminar.Cislo', verbose_name='číslo'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='cislonode',
|
||||||
|
name='first_child',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.CisloNode', verbose_name='první potomek'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='cislonode',
|
||||||
|
name='root',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.CisloNode', verbose_name='kořen stromu'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='cislonode',
|
||||||
|
name='succ',
|
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.CisloNode', verbose_name='další element na stejné úrovni'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -217,7 +217,7 @@ class Resitel(SeminarModelBase):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
osoba = models.ForeignKey(Osoba, blank=False, null=True, verbose_name='osoba') # FIXME opravit po prvni migraci
|
osoba = models.OneToOneField(Osoba, blank=False, null=True, verbose_name='osoba') # FIXME opravit po prvni migraci
|
||||||
|
|
||||||
skola = models.ForeignKey(Skola, blank=True, null=True, verbose_name='škola')
|
skola = models.ForeignKey(Skola, blank=True, null=True, verbose_name='škola')
|
||||||
|
|
||||||
|
@ -455,7 +455,7 @@ class Cislo(SeminarModelBase):
|
||||||
class Organizator(SeminarModelBase):
|
class Organizator(SeminarModelBase):
|
||||||
# zmena dedicnosti z models.Model na SeminarModelBase, potencialni vznik bugu
|
# zmena dedicnosti z models.Model na SeminarModelBase, potencialni vznik bugu
|
||||||
|
|
||||||
osoba = models.ForeignKey(Osoba, verbose_name='osoba', related_name='org',
|
osoba = models.OneToOneField(Osoba, verbose_name='osoba', related_name='org',
|
||||||
help_text='osobní údaje organizátora', null=True, blank=False) #FIXME opravit po migraci
|
help_text='osobní údaje organizátora', null=True, blank=False) #FIXME opravit po migraci
|
||||||
|
|
||||||
vytvoreno = models.DateTimeField(
|
vytvoreno = models.DateTimeField(
|
||||||
|
@ -709,9 +709,9 @@ class Uloha(Problem):
|
||||||
verbose_name_plural = 'Úlohy'
|
verbose_name_plural = 'Úlohy'
|
||||||
|
|
||||||
|
|
||||||
zadani = models.ForeignKey(Text, verbose_name='veřejné zadání', related_name="uloha_zadani_set", blank=True, null=True)
|
zadani = models.OneToOneField(Text, verbose_name='veřejné zadání', related_name="uloha_zadani_set", blank=True, null=True)
|
||||||
|
|
||||||
vzorak = models.ForeignKey(Text, verbose_name='vzorové řešení', related_name="uloha_vzorak_set", blank=True, null=True)
|
vzorak = models.OneToOneField(Text, verbose_name='vzorové řešení', related_name="uloha_vzorak_set", blank=True, null=True)
|
||||||
|
|
||||||
|
|
||||||
cislo_zadani = models.ForeignKey(Cislo, verbose_name='číslo zadání', blank=True, null=True, related_name='zadane_ulohy')
|
cislo_zadani = models.ForeignKey(Cislo, verbose_name='číslo zadání', blank=True, null=True, related_name='zadane_ulohy')
|
||||||
|
@ -768,7 +768,7 @@ class Reseni(SeminarModelBase):
|
||||||
forma = models.CharField('forma řešení', max_length=16, choices=FORMA_CHOICES, blank=False,
|
forma = models.CharField('forma řešení', max_length=16, choices=FORMA_CHOICES, blank=False,
|
||||||
default=FORMA_EMAIL)
|
default=FORMA_EMAIL)
|
||||||
|
|
||||||
text_cely = models.ForeignKey(Text, verbose_name='Plná verze textu řešení',
|
text_cely = models.OneToOneField(Text, verbose_name='Plná verze textu řešení',
|
||||||
blank=True, null=True, related_name="reseni_cely_set")
|
blank=True, null=True, related_name="reseni_cely_set")
|
||||||
|
|
||||||
text_zkraceny = models.ManyToManyField(Text, verbose_name='zkrácené verze řešení',
|
text_zkraceny = models.ManyToManyField(Text, verbose_name='zkrácené verze řešení',
|
||||||
|
@ -998,8 +998,8 @@ class Konfera(models.Model):
|
||||||
|
|
||||||
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
||||||
help_text='Neveřejná poznámka ke konfeře(plain text)')
|
help_text='Neveřejná poznámka ke konfeře(plain text)')
|
||||||
|
# Jedno reseni se vztahuje nejvyse k jedne konfere
|
||||||
reseni = models.ForeignKey(Reseni, verbose_name='článek ke konfeře', related_name='konfery',
|
reseni = models.OneToOneField(Reseni, verbose_name='článek ke konfeře', related_name='konfery',
|
||||||
help_text='Účastnický přípěvek o konfeře', on_delete = models.SET_NULL,
|
help_text='Účastnický přípěvek o konfeře', on_delete = models.SET_NULL,
|
||||||
null=True, blank=True)
|
null=True, blank=True)
|
||||||
|
|
||||||
|
@ -1106,7 +1106,7 @@ class TreeNode(models.Model):
|
||||||
blank = True,
|
blank = True,
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
verbose_name="první potomek")
|
verbose_name="první potomek")
|
||||||
succ = models.ForeignKey('self',
|
succ = models.OneToOneField('self',
|
||||||
related_name="prev",
|
related_name="prev",
|
||||||
null = True,
|
null = True,
|
||||||
blank = True,
|
blank = True,
|
||||||
|
@ -1118,7 +1118,7 @@ class RocnikNode(TreeNode):
|
||||||
db_table = 'seminar_nodes_rocnik'
|
db_table = 'seminar_nodes_rocnik'
|
||||||
verbose_name = 'Ročník (Node)'
|
verbose_name = 'Ročník (Node)'
|
||||||
verbose_name_plural = 'Ročníky (Node)'
|
verbose_name_plural = 'Ročníky (Node)'
|
||||||
rocnik = models.ForeignKey(Rocnik,
|
rocnik = models.OneToOneField(Rocnik,
|
||||||
on_delete = models.PROTECT, # Pokud chci mazat ročník, musím si Node pořešit ručně
|
on_delete = models.PROTECT, # Pokud chci mazat ročník, musím si Node pořešit ručně
|
||||||
verbose_name = "ročník")
|
verbose_name = "ročník")
|
||||||
|
|
||||||
|
@ -1127,7 +1127,7 @@ class CisloNode(TreeNode):
|
||||||
db_table = 'seminar_nodes_cislo'
|
db_table = 'seminar_nodes_cislo'
|
||||||
verbose_name = 'Číslo (Node)'
|
verbose_name = 'Číslo (Node)'
|
||||||
verbose_name_plural = 'Čísla (Node)'
|
verbose_name_plural = 'Čísla (Node)'
|
||||||
cislo = models.ForeignKey(Cislo,
|
cislo = models.OneToOneField(Cislo,
|
||||||
on_delete = models.PROTECT, # Pokud chci mazat číslo, musím si Node pořešit ručně
|
on_delete = models.PROTECT, # Pokud chci mazat číslo, musím si Node pořešit ručně
|
||||||
verbose_name = "číslo")
|
verbose_name = "číslo")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue