Да, нормально с русским работает. Глючил MySQL, пока я в его ini не
поменял кодировку по умолчанию и не пересоздал базу. Версия джанго -
срез, закачанный на прошлой неделе. С самого начала в модели не было
метода __str__, только __unicode__. И наконец, даже если поменять
локаль на английскую, валидатор вываливается с ошибкой, локаль не
влияет.
Вот models.py:
# -*- coding: utf-8 -*-
from django.db import models
from django.core import validators
class Page(models.Model):
active = models.BooleanField(verbose_name='Вкл',db_index=True)
parent =
models.ForeignKey('self',verbose_name='Родитель',db_index=True)
order = models.IntegerField(verbose_name='Порядок',default=1)
url_name =
models.SlugField(verbose_name='Ссылка',unique=True,db_index=True)
name = models.CharField(max_length=500,verbose_name='Имя
страницы',blank=True)
content = models.TextField(verbose_name='Текст',blank=True)
creation_date = models.DateTimeField(verbose_name='Дата
создания',auto_now_add=True,db_index=True)
last_update =
models.DateTimeField(verbose_name='Изменена',auto_now=True,db_index=True)
def __unicode__(self):
return
self.name + ' - ' + self.url_name + ''
class Admin:
list_display = ('name', 'active', 'url_name',
'parent','creation_date','last_update',)
list_filter = ('active', 'parent',)
search_fields = ('name', 'url_name')
pass
class Meta:
verbose_name = 'страница'
verbose_name_plural = 'страницы'
ordering = ['-last_update',]
unique_together = (("parent", "order"),)
def new_order(self):
bottom_pages = Page.objects.order_by('-order')[:1]
if len(bottom_pages) == 0:
return 1
else:
return bottom_pages[0].order
def save(self):
super(Page, self).save()
def move_down(self):
return True
И, наконец, ошибка имеет следующий вид:
UnicodeDecodeError at /admin/masterstroy/page/2/
'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in
range(128)
C:\Python25\Lib\site-packages\django\db\models\manipulators.py in
manipulator_validator_unique_together
309. {'object': capfirst(opts.verbose_name), 'type':
field_list[0].verbose_name, 'field': get_text_list([f.verbose_name for
f in field_list[1:]], _('and'))} ...
▼ Local vars Variable Value
ManyToOneRel <class 'django.db.models.fields.related.ManyToOneRel'>
all_data <QueryDict: {u'url_name': [u'second'], u'name':
[u'\u0412\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u0430\u043d
\u0438\u0446\u0430'], u'parent': [u'3'], u'content':
[u'\u0422\u0435\u043a\u0441\u0442 \u0432\u0442\u043e\u0440\u043e\u0439
\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b'], u'active':
[u'on'], u'order': [u'1']}>
f <django.db.models.fields.IntegerField object at 0x01584950>
field_data u'3'
field_list [<django.db.models.fields.related.ForeignKey object at
0x015848F0>, <django.db.models.fields.IntegerField object at
0x01584950>]
field_name 'order'
field_name_list ('parent', 'order')
field_val u'1'
get_text_list <function get_text_list at 0x01308B70>
kwargs {'order__iexact': u'1', 'parent__id__iexact': u'3'}
old_obj <Page: Первая страница - first>
opts <Options for Page>
self <django.db.models.manipulators.ChangeManipulator object at
0x0168CD90>