2012-12-28 39 views
6

boş sahadan izin vermez:OneToOneField ben bu iki sınıf var

Ben şimdi ProjectParticipation Tabloda aşağıdaki alan olsun SQL veri tabanı oluşturulurken ediyorum
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) 

: Ben bill_id bir "sütun null değeri 'olsun Bill olmadan ProjectParticipation eklemek istediğinizde

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, 

Ve şimdi' değil boş kısıtlamayı ihlal".

Buna karşı ne yapmalı?

+0

"Fatura" sınıfı, "ProjectParticipation" sınıfından önce olmalıdır. –

+0

Aslında daha önce buraya yanlış bir şekilde yapıştırdım. Bunu değiştireceğim. – melbic

+0

Db'yi senkronize ettikten sonra Null Constraint'i eklediniz mi? Veritabanını silin ve db'yi yeniden senkronize edin (eğer Güney'i kullanmıyorsanız, aksi halde şema değişikliklerini geçirdiğinizden emin olun). –

cevap

6

Veritabanını senkronize ettikten sonra Null Constraint eklediniz. Veritabanını silin ve veritabanını yeniden senkronize edin (eğer Django-South'u kullanmıyorsanız, aksi takdirde şema değişikliklerini geçirdiğinizden emin olun)