2012-12-28 70 views
6

我有這兩個類:OneToOneField與空=真不允許空場

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) 

當我現在構建SQL數據庫我得到下表中的字段中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, 

,現在當我想插入不比爾ProjectParticipation我得到一個bill_id「列空值‘’違反了非空約束」。

該怎麼辦?

+0

「Bill」類應放在「ProjectParticipation」類之前 –

+0

它實際上是在之前,只是粘貼在這裏錯誤的方式。我會改變這一點。 – melbic

+0

可能是在同步數據庫後添加了空約束。刪除數據庫並重新同步數據庫(如果您沒有使用South,請確保已經遷移了模式更改)。 –

回答

6

可能是在同步數據庫之後稍後添加了Null Constraint。刪除數據庫並重新同步數據庫(如果您沒有使用Django-South,否則確保您已經遷移了模式更改)