djanghvad可翻译管理员和管理

2024-06-16 12:15:58 发布

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

我正在努力做这件事

在管理员py在

class TapasInline(TranslatableStackedInline):
    model = Tapa
    can_delete = True
    extra = 0
    verbose_name = 'Tapas'
    verbose_name_plural = 'Tapas'
    fields = ('name','description','photo', 'tags')

。。。在

^{pr2}$

。。。在

admin.site.register(Bar,BarAdmin)

在模型.py在

class Tapa(TranslatableModel):
    translations = TranslatedFields(
        name = models.CharField(max_length=255,verbose_name='Nombre de la tapa'),
        description = models.TextField(verbose_name='Descripcion de la tapa')
    )
    photo = models.ImageField(verbose_name='Foto de la tapa')
    average_rating = models.FloatField(verbose_name='Puntuación media de la tapa',default=-1)
    bar = models.ForeignKey(Bar,verbose_name='Bar')
    tags = models.ManyToManyField(Tag,verbose_name='Etiquetas')
    def __unicode__(self):
        return self.lazy_translation_getter('name')

,但我得到了一个错误:

hvad.exceptions.WrongManager: To access translated fields like 'name' from an untranslated model, you must use a translation aware manager. For non-translatable models, you can get one using hvad.utils.get_translation_aware_manager.
For translatable models, use the language() method.

[Django==1.8]

我做错什么了?我该怎么解决呢?在

提前谢谢


Tags: namepyfieldsverbosemodelmodelsbarde
1条回答
网友
1楼 · 发布于 2024-06-16 12:15:58

不幸的是,还不支持在管理选项中直接使用翻译字段。它将在下一个版本中(对大多数人来说)。在

罪魁祸首代码在管理员的系统检查模块中。它可以工作,但系统检查包括在管理真的坚持,它将不允许一个字段,它不承认。在

同时,您可以使用get_fields方法而不是fields属性来绕过管理检查。这应该可以做到:

def get_fields(self, request, obj=None):
    return ('name','description','photo', 'tags')

请告诉我它是否有效。我会早点回答的,但我不常在这里逗留。在

相关问题 更多 >