我正在努力做到这一点
管理员.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.
[Django==1.8]
我做错了什么?我该如何解决?
提前致谢
请您参考如下方法:
不幸的是,目前还不支持在管理选项中直接使用翻译字段。它将在下一个版本中发布(对于其中的大多数)。
罪魁祸首代码在管理员的系统检查模块中。它会工作,但 admin 中包含的系统检查确实坚持它不会允许它不识别的字段。
与此同时,您可以使用 get_fields 方法而不是 fields 属性来绕过管理检查。这应该可以解决问题:
def get_fields(self, request, obj=None):
return ('name','description','photo', 'tags')
请告诉我它是否有效。我会早点回答,但我不经常在这里逗留。
