我正在尝试使用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中返回我需要的值'我不确定可能是什么问题
答案 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)