Estoy vagamente familiarizado con la naturaleza del Unicode, pero no estoy seguro de cómo encajan todas las piezas. Tengo un error al mostrar instancias específicas en la página de administración.django error unicode en la página de administración
Caught UnicodeEncodeError while rendering: 'ascii' codec can't encode character u'\u2019' in position 29: ordinal not in range(128)
Aquí es mi modelo:
class Proposal(models.Model):
project = models.ForeignKey(Project)
dateCreated = models.DateTimeField(editable=False)
xml = models.TextField(max_length=1000000)
def __str__(self):
return str('Proposal for: %s' % self.project.name)
he ido en mi base de datos MySQL y verificó que la base de datos, tablas y columnas están cotejados como utf8_unicode_ci, así que no entiendo por qué el la página está tratando de renderizar como ascii. Mirando varios foros y documentos, veo mencionar las funciones str y unicode, pero no parecen tener nada que ver con esto ya que la lista de instancias aparece bien en la página de administración. Solo muestra el formulario de instancia real que causa un problema.
He aquí algunos ejemplos xml me sacó de phpmyadmin ...
<?xml version="1.0" encoding="UTF-8"?>
<proposal>
<section title="OVERVIEW">
<section title="Introduction">
<text>
This proposal is not in the system because it was completed as an agreement in Word previous to us getting this application up and running. Please refer to the attachments in this project for documentation or to see the agreement.
</text>
</section>
</section>
</proposal>
Incluso he intentado excluir deliberadamente el XML (que no puedo hacer en el largo plazo, ya que me gustaría que se ser editable en la sección de administración), pero sigo teniendo el mismo error, así que ni siquiera estoy convencido de que el xml sea el problema. Si el xml no es el problema, no tengo idea de qué otra cosa podría evitar que se muestre esta página.
class ProposalAdmin(admin.ModelAdmin):
exclude = ('xml',)
admin.site.register(Project)
Gracias por el truco encoded() - ps: debe ser 'encode ('ascii', 'replace')' –
@Yuji Tomita, creo que se puede llamar de ambas formas. Argumentos de palabras clave y cosas así: http://docs.python.org/reference/expressions.html#calls –
'encode()' no toma argumentos de palabra clave - al menos en 2.6 –