2015-04-05 43 views
1

我試圖生成高清保存在數據庫中使用下面的代碼的條目在models.pyDjango的匹配查詢不存在使用PK形式外鍵

from alumno.models import alumno 
from curso.models import cursos 

class matricula(models.Model): 
    curso = models.ForeignKey(cursos) 
    alumno = models.ForeignKey(alumno) 
    fecha_matricula = models.DateTimeField(auto_now_add=True, editable=False) 
    codigo_inscripcion = models.CharField(max_length=25, null=False, blank=True, editable=False) 

    def __unicode__(self): 
     return u'%s' % (self.codigo_inscripcion,) 

    def crear_codigo(self): 
     idAlumno = '%05d' % matricula.objects.get(pk=self.id).alumno.id 
     idCurso = '%04d' % matricula.objects.get(pk=self.id).curso.id 
     anio = self.fecha_matricula.year 
     return u'%s-%s-%s' % (idAlumno, idCurso, anio) 

    def save(self, *args, **kwargs): 
     if not self.codigo_inscripcion: 
      self.codigo_inscripcion = self.crear_codigo() 
    return super(matricula, self).save(*args, **kwargs) 

但我不斷收到錯誤像這樣:

Exception Type:  DoesNotExist 
Exception Value: matricula matching query does not exist. 

according've在閱讀其他responses問題將是url.py但不encuentor在DBUG沒有提及。

在調試

是參照第一此行

 idAlumno = '%05d' % matricula.objects.get(pk=self.id).alumno.id 

什麼,我不明白的是,在外殼和返回我需要的價值也不太清楚可能是什麼問題

回答

0

當爲新對象調用save()方法時,此對象的id屬性爲None。當然pk=None的對象不存在。

爲什麼從DB加載當前記錄。直接使用對象的字段:

def crear_codigo(self): 
    return u'%05d-%04d-%s' % (self.alumno.id, self.curso.id, 
           self.fecha_matricula.year)