mam tych dwóch klas:OneToOneField NULL = true nie zezwala na pustym polu
class Bill(models.Model):
date = models.DateField()
total_amount_chf = models.DecimalField('Cost (in CHF)', max_digits=10, decimal_places=2)
class ProjectParticipation(models.Model):
project = models.ForeignKey('Project')
user = models.ForeignKey(User)
is_admin = models.BooleanField()
bill = models.OneToOneField(Bill, on_delete=models.SET_NULL, null=True, blank=True)
Kiedy jestem teraz konstruowanie SQL-baza uzyskać następujące pola w tabeli dla ProjectParticipation :
bill_id integer NOT NULL,
CONSTRAINT expenses_projectparticipation_bill_id_fkey FOREIGN KEY (bill_id)
REFERENCES expenses_bill (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED,
a teraz, gdy chcę wstawić ProjectParticipation bez Bill ja dostać „wartość null w kolumnie«bill_id»narusza nie null ograniczenie”.
Co robić wbrew temu?
Klasa 'Bill' powinna być przed klasą' ProjectParticipation' –
Tak naprawdę jest wcześniej, tylko przykleiłem ją tutaj w niewłaściwy sposób. Po prostu to zmienię. – melbic
Może być dodane ograniczenie Null później po zsynchronizowaniu db. Usuń bazę danych i ponownie zsynchronizuj bazę danych (jeśli nie korzystasz z obszaru Południe, sprawdź, czy migracja zmian schematu została przeprowadzona). –