【问题标题】:django matching query does not exist using pk form foreignkeydjango 匹配查询不存在使用 pk 形式外键
【发布时间】:2015-06-09 18:45:44
【问题描述】:

我正在尝试使用 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 但不是 encuentor 在 DBUG 中没有参考。

在调试中是引用第一行

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

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

【问题讨论】:

    标签: django save foreign-keys


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-13
      • 2021-07-19
      • 1970-01-01
      • 2015-01-28
      • 2022-01-05
      • 2020-10-15
      • 2016-05-11
      相关资源
      最近更新 更多