使用pk form foreignkey不存在django匹配查询

时间:2015-04-05 01:20:09

标签: django save foreign-keys

我正在尝试使用models.py中的以下代码生成def来保存数据库中的条目

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.

根据已阅读其他responses,问题将是url.py,但不会在DBUG中没有引用。

调试中的

是对第一行的引用

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

我不明白的是在shell中返回我需要的值'我不确定可能是什么问题

1 个答案:

答案 0 :(得分: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)