2015-04-05 68 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)