Я пытаюсь использовать django-datatrans для перевода MarkupField
(из django-markitup ) на модель.Оба приложения работают правильно независимо друг от друга, но когда я регистрирую datatrans для перевода MarkupField
, я больше не могу добавлять объекты в админ.
Соответствующий код:
from django.db import models
from markitup.fields import MarkupField
from datatrans.utils import register
class Work(models.Model):
title = models.CharField(max_length=500)
content = MarkupField(help_text=MARKDOWN_HELP)
class WorkTranslation(object):
fields = ('title', 'content')
register(Work, WorkTranslation)
При попыткеДля добавления нового рабочего объекта в администратор я получаю следующую ошибку:
'unicode' object has no attribute 'raw'
Ошибка происходит здесь, в markitup-модуле (в строке rendered = render_func(value.raw)
:
.../lib/python2.7/site-packages/markitup/fields.py in pre_save
def pre_save(self, model_instance, add):
value = super(MarkupField, self).pre_save(model_instance, add)
rendered = render_func(value.raw)
setattr(model_instance, _rendered_field_name(self.attname), rendered)
return value.raw
Локальные переменные при сбое:
add: False
model_instance: <Work: This is the title>
value: u'This is the content.'
self: <markitup.fields.MarkupField: content>
Я пытался проверить переменную value
, когда класс Work
не зарегистрирован для перевода. В этом случае (и тогда он работает правильно) онэто не строка Юникода, а экземпляр markitup.fields.Markup
.
Я не смог понять, почему тип меняется, и я понимаю, что этот вопрос довольно специфичен. Но я надеюсь, что у кого-то есть понимание в любом случае ..