2012-12-28 8 views
6

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?

+0

Klasa 'Bill' powinna być przed klasą' ProjectParticipation' –

+0

Tak naprawdę jest wcześniej, tylko przykleiłem ją tutaj w niewłaściwy sposób. Po prostu to zmienię. – melbic

+0

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

Odpowiedz

6

Może być później dodany Null Constraint po synchronizacji bazy danych. Usuń bazę danych i ponownie zsynchronizuj bazę danych (jeśli nie używasz Django-South w przeciwnym razie upewnij się, że migrowałeś zmiany schematu)

Powiązane problemy