【问题标题】:UnicodeEncodeError when using search_fields in Django admin在 Django admin 中使用 search_fields 时出现 UnicodeEncodeError
【发布时间】:2017-07-29 14:12:58
【问题描述】:

我是 Django 的新手,在管理员中使用带有西里尔符号的 search_fields 时出现 UnicodeEncodeError。使用 ascii 符号搜索可以正常工作。我应该寻找什么?

Exception Type: UnicodeEncodeError at /admin/persons/person/
Exception Value: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)

models.py

class Person(GenericModel, DatePeriodMixin):
    last_name = models.CharField(_(u'фамилия'), max_length=255)
    first_name = models.CharField(_(u'имя'), max_length=255, blank=True)
    patronymic = models.CharField(_(u'отчество'), max_length=255, blank=True)

    class Meta:
        verbose_name = _('персоналия')
        verbose_name_plural = _('персоналии')
        ordering = ['last_name', 'first_name', 'patronymic']

    def __unicode__(self):
        return u'{} {} {}'.format(
            self.last_name,
            self.first_name,
            self.patronymic).rstrip()

    def get_absolute_url(self):
        return reverse('persons:detail', kwargs={'pk': self.pk})

admin.py

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
    list_display = ('last_name', 'first_name', 'patronymic')
    search_fields = ['last_name']
    list_filter = ('profession')
    filter_horizontal = ('organizations', 'profession')

    def save_model(self, request, obj, form, change):
        obj.editor = request.user
        obj.save()

【问题讨论】:

  • 如果您还可以提供引发异常的代码 - /admin/persons/person/ - 它将提供更好的机会让某人向您展示错误所在。
  • @PTD 更新了我的问题

标签: python django python-2.7


【解决方案1】:

好的,通过将其添加到 admin.py 来修复它:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

(在这里找到:https://github.com/encode/django-rest-framework/issues/2912

不确定它是什么,但现在对我有用。现在开始学习python中的编解码器。

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 2012-03-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多