2014-12-30 29 views
-1

我的models.py:IntegrityError:yonetim_ders.ogretim_elemani_id可能不是NUL

from django.db import models 


class OgretimElemani(models.Model): 
    adi = models.CharField(max_length=50) 
    soyadi = models.CharField(max_length=50) 
    telefonu = models.CharField(max_length = 10 , blank=True) 
    e_posta_adresi = models.EmailField(blank=True) 

    def __unicode__(self): 
     return '%s %s' % (self.soyadi,self.adi) 


class Ders(models.Model): 
    kodu = models.CharField(max_length=10) 
    adi = models.CharField(max_length=50) 
    ogretim_elamani = models.ForeignKey(OgretimElemani) 
    tanimi = models.CharField(max_length=1000,blank = True) 

    def __unicode__(self): 
     return '%s %s %s' % (self.kodu,self.adi,self.ogretim_elamani) 



class Ogrenci(models.Model): 
    numarasi = models.IntegerField() 
    adi = models.CharField(max_length=50) 
    soyadi = models.CharField(max_length=50) 
    aldigi_dersler = models.ManyToManyField(Ders) 

    def __unicode__(self): 
     return '%s %s %s' % (self.soyadi,self.adi,self.aldigi_dersler) 

Django的外殼:

>>>ders1=Ders(kodu='KIM101', adi='Kimya-1') 
>>>ders1.ogretim_elemani=OgretimElemani[0] 
>>>ders1.save() 

IntegrityError : yonetim_ders.ogretim_elemani_id may not be NULL 
+0

閱讀本文sscce.org – reggaeguitar

回答

0

必須指定一個已經保存到數據庫的OgretimElemani實例。

例如,以下應該工作。

>>> ders1 = Ders(kodu='KIM101', adi='Kimya-1' 
>>> ogretim_elemani = OgretimElemani.objects.all()[0] # fetch the first one from the database 
>>> ders1.ogretim_elemani = ogretim_elemani 
>>>ders1.save()  

你的例子不是很清楚,因爲你使用的是OgretimElemani[0]。您不應該重複使用變量名稱OgretimElemani,它會使代碼混淆。

+1

感謝您的回答,但我找到了解決方案......我做了一個遷移'yonetim(這是我的應用程序名稱)',它的工作:) – korsu