Django 管理 ascii 错误
Django admin ascii error
我知道问题出在我有一个特殊的字符。但这是棘手的部分:它已经在 Django 数据库中,所以当我想在管理员中删除它时,我得到错误页面,所以我无法删除它。
型号
from __future__ import unicode_literals
from django.db import models
from django.forms import ModelForm
from django.core.exceptions import NON_FIELD_ERRORS
from django.contrib.auth.models import User
class Richtingen(models.Model):
naam = models.CharField(max_length=100)
omschrijving = models.TextField(max_length=2000)
def __str__(self):
return '%s %s' % (self.naam, self.omschrijving)
class Leraren(models.Model):
naam = models.CharField(max_length=100)
voornaam = models.CharField(max_length=100)
foto = models.ImageField(upload_to = 'leerkrachten', default='leerkrachten/anoniem.png')
email = models.EmailField()
def __str__(self):
return '%s %s %s %s' % (self.naam, self.voornaam, self.foto, self.email)
class Klassen(models.Model):
naam = models.CharField(max_length=100)
numeriekeCode = models.CharField(max_length=100)
richting = models.ForeignKey(Richtingen, on_delete=models.CASCADE)
leraar = models.ForeignKey(Leraren, on_delete=models.CASCADE)
def __str__(self):
return '%s %s %s %s' % (self.naam, self.numeriekeCode, self.richting, self.leraar)
def __unicode__(self):
return u'%s %s %s %s' % (self.naam, self.numeriekeCode, self.richting, self.leraar)
class Contact(models.Model):
email = models.EmailField()
telefoonNr = models.CharField(max_length=20)
adres = models.CharField(max_length=255)
bericht = models.TextField(max_length=2000)
def __str__(self):
return '%s %s %s %s' % (self.email, self.telefoonNr, self.adres, self.bericht)
管理员
错误
(我刚刚注意到你有 from future import unicode_literals:你所有的文字都是 unicode,其中一些前面的 u
是多余的):
你的 __str__
方法 return Unicode 字符串;但是你在 Python 2 中,那个函数应该是 return 一个字节串。 Django 将尝试使用其 return 并将其解码为 unicode 字符串,但如果其中有 non-ASCII 数据,则会失败。只需调用那些 __str__
函数 __unicode__
.
只要您在 Python 2 上;否则,参见 the docs.
我知道问题出在我有一个特殊的字符。但这是棘手的部分:它已经在 Django 数据库中,所以当我想在管理员中删除它时,我得到错误页面,所以我无法删除它。
型号
from __future__ import unicode_literals
from django.db import models
from django.forms import ModelForm
from django.core.exceptions import NON_FIELD_ERRORS
from django.contrib.auth.models import User
class Richtingen(models.Model):
naam = models.CharField(max_length=100)
omschrijving = models.TextField(max_length=2000)
def __str__(self):
return '%s %s' % (self.naam, self.omschrijving)
class Leraren(models.Model):
naam = models.CharField(max_length=100)
voornaam = models.CharField(max_length=100)
foto = models.ImageField(upload_to = 'leerkrachten', default='leerkrachten/anoniem.png')
email = models.EmailField()
def __str__(self):
return '%s %s %s %s' % (self.naam, self.voornaam, self.foto, self.email)
class Klassen(models.Model):
naam = models.CharField(max_length=100)
numeriekeCode = models.CharField(max_length=100)
richting = models.ForeignKey(Richtingen, on_delete=models.CASCADE)
leraar = models.ForeignKey(Leraren, on_delete=models.CASCADE)
def __str__(self):
return '%s %s %s %s' % (self.naam, self.numeriekeCode, self.richting, self.leraar)
def __unicode__(self):
return u'%s %s %s %s' % (self.naam, self.numeriekeCode, self.richting, self.leraar)
class Contact(models.Model):
email = models.EmailField()
telefoonNr = models.CharField(max_length=20)
adres = models.CharField(max_length=255)
bericht = models.TextField(max_length=2000)
def __str__(self):
return '%s %s %s %s' % (self.email, self.telefoonNr, self.adres, self.bericht)
管理员
(我刚刚注意到你有 from future import unicode_literals:你所有的文字都是 unicode,其中一些前面的 u
是多余的):
你的 __str__
方法 return Unicode 字符串;但是你在 Python 2 中,那个函数应该是 return 一个字节串。 Django 将尝试使用其 return 并将其解码为 unicode 字符串,但如果其中有 non-ASCII 数据,则会失败。只需调用那些 __str__
函数 __unicode__
.
只要您在 Python 2 上;否则,参见 the docs.