使用 pk 形式的外键不存在 django 匹配查询

django matching query does not exist using pk form foreignkey

我正在尝试生成一个 def 以在 models.py

中使用以下代码在数据库中保存一个条目
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 但不是 encuentor 在 DBUG 中没有参考。

在调试中引用第一行

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

我不明白的是,在 shell 和 returns 中,我需要的值我不确定可能是什么问题

当为新对象调用 save() 方法时,此对象的 id 属性 为 None。当然 pk=None 的对象不存在。

为什么要从数据库中加载当前记录。直接使用对象的字段:

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