2

我正在尝试做这项工作

管理员.py

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

...

class BarAdmin(TranslatableAdmin):
    inlines = (TapasInline,)

...

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.

[姜戈==1.8]

我究竟做错了什么?我该如何解决?

提前致谢

4

1 回答 1

2

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

罪魁祸首代码在管理员的系统检查模块中。它会起作用,但是 admin 中包含的系统检查确实坚持它不会允许它无法识别的字段。

同时,您可以使用get_fields方法而不是fields属性来解决管理员检查问题。这应该可以解决问题:

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

请告诉我它是否有效。我会早点回答的,但我很少在这儿闲逛。

于 2015-05-11T03:22:05.077 回答