当使用django-datatrans和django-markitup时出现AttributeError

2024-06-07 08:41:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用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)

当我尝试在管理中添加新的工作对象时,我收到以下错误:

^{pr2}$

错误发生在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>

Work类没有注册进行翻译时,我试图检查变量value。在这种情况下(然后它确实工作正常),它不是unicode字符串,而是markitup.fields.Markup的实例。在

我不知道为什么类型会改变,我意识到这个问题相当具体。但我希望有人能洞悉一切。。在


Tags: djangoinstancefromimportselffieldsmodelvalue
1条回答
网友
1楼 · 发布于 2024-06-07 08:41:39

在测试时,django-modeltranslation和django markitup有相同的问题:

class ModelTests(TestCase):
    def test_my_class(self):
        self.assertRaises(IntegrityError, models.MyClass.objects.create)

它适用于我:

^{pr2}$

其中我安装的语言是ende。我的默认语言是eninfo是我的领域,有标记和翻译。(我在这里测试MyClass上需要一个字段,因此IntegrityError。)

(顺便说一句,这会产生稍微不同的错误:

class ModelTests(TestCase):
    def test_my_class(self):
        self.assertRaises(IntegrityError, models.MyClass.objects.create(info=''))

错误:

AttributeError: 'NoneType' object has no attribute 'raw'

也许这对某人有帮助。在

相关问题 更多 >

    热门问题