Доброго дня, уважаемые.
Бьюсь вот даже не с джангой, а по всей видимости с апачем. Возможно, кто-то поможет.
Есть модель:
class EC_File(models.Model):
def get_doc_dir(self, filename):
import uuid
return u'media/ecs/%s/%s_%s' % (self.owner.id, str(uuid.uuid4().hex[2:4]), filename)
u_file = models.FileField(upload_to=get_doc_dir, verbose_name='Файл расчета', blank=True, null=True)
l_value = models.DecimalField(max_digits=12, decimal_places=2, verbose_name='Количество')
owner = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='Кто ввел данные', related_name='EC_file_ow')
entry_date = models.DateField(auto_now_add=True, blank=True,verbose_name='Дата внесения в базу')
def __unicode__(self):
return '%s' % (self.u_file)
и привязка ее к другой
class Order(models.Model):
u_file = models.OneToOneField('orders.EC_File', verbose_name='Файл', related_name='order_file_a1', blank=True, null = True)
Проблема с файлами, где в имени есть русские буквы.
Первая модель сохраняется. Но когда ее подтягивает вторая модель, происходит ошибка:
Django Version: 1.5.1
Exception Type: UnicodeEncodeError
Exception Value: 'ascii' codec can't encode characters in position 61-65: ordinal not in range(128)
Дает подсказку:
The string that could not be encoded/decoded was: 1/9b_Кухня.ec
и финально
/home2/paulbors/python27/lib/python2.7/genericpath.py in exists
os.stat(path) ...
▼ Local vars
Variable Value
path
u'/home2/paulbors/django-projects/potolok/media/media/ecs/1/9b_\u041a\u0443\u0445\u043d\u044f.ec'
В .htaccess utf-8 прописаны в виде:
IndexOptions +Charset=UTF-8
AddDefaultCharset UTF-
На локальной машине на runserver это дело все крутится, но все равно есть косяк с выводом списка моделей в консоли - тоже дает вот эти самые [bad unicode data] вместо имени.
Возможно, кто-то сталкивался? Что делать с файлами? Переименовывать их при загрузке? Или перекодировать имена как-то?
Почему на локали работает-то, хотя и криво?