这是另一种的UnicodeDecodeError我在Django处理。 我找不到解决问题的方法。
我试图创建一个对象:
nivel_obj = Nivel.objects.filter(id=nivel_id)
nueva_matricula = Matricula(nivel=nivel_obj, ano_lectivo=ano_lectivo, alumno=a)
nueva_matricula.save()
该“Matricula”对象有一个“nivel_obj”这是一个外键。 该“nivel_obj”有一个名称,不能被编码/解码的字符串。
我该如何解决这个问题?
这些都是模型:
class Nivel(models.Model):
"""
Ej - "Octavo de Basica, 6to Curso"
"""
nombre = models.CharField(max_length=150)
class Meta:
verbose_name_plural = "niveles"
def __unicode__(self):
return u"%s" % (self.nombre)
class Matricula(models.Model):
ano_lectivo = models.PositiveIntegerField(validators=[MaxValueValidator(9999)])
alumno = models.ForeignKey(Alumno)
nivel = models.ForeignKey(Nivel, null=True) <----
status = models.CharField(max_length=150, choices=(("A", "Activo"), ("I", "Inactivo")))
def validate_unique(self, exclude=None):
if Matricula.objects.filter(alumno=self.alumno, nivel=self.nivel, ano_lectivo=self.ano_lectivo).exists():
error = u'Ya existe una matrícula igual, por favor revisa el año, el nivel y el alumno'
raise ValidationError({NON_FIELD_ERRORS: error})
else:
pass
class Meta:
verbose_name_plural = "matrículas"
verbose_name = "matrícula"
ordering = ("alumno",)
def __unicode__(self):
return u"Matricula %s %s" % (self.alumno, self.ano_lectivo)
确切的错误来自于有一个名字类似这样的“八开德BASICA”,我不能用它,而无需一个的UnicodeDecodeError工作“NIVEL”对象。
这是错误:
UnicodeDecodeError at /sisacademico/matricular_grupo/
'ascii' codec can't decode byte 0xc3 in position 20: ordinal not in range(128)
...
The string that could not be encoded/decoded was: de B��sica
编辑:发现错误
OK,我发现我的错误,我不会删除的问题会导致错误(的UnicodeDecodeError)Django最让我完全是误导。 错误是这个:
nivel_obj = Nivel.objects.filter(id=nivel_id) <---
nueva_matricula = Matricula(nivel=nivel_obj, ano_lectivo=ano_lectivo, alumno=a)
我无法保存一个新的对象与NIVEL =查询集,而不是NIVEL = NivelObject。
它应该是:
nivel_obj = Nivel.objects.get(id=nivel_id)
我的错。
但是,为什么在地球上的Django给我一个UnicodeDecodeError错误?!