我正在研究django1.5.1,我想知道以下问题:是否可以使用django-transmeta
并使用用户访问管理的活动语言在可翻译字段上定义模型中的顺序?在
到目前为止,我实现了使用翻译后的字段和使用默认语言排序,而不是使用活动语言,因为如果我从元类(或从ModelAdmin类)调用方法,get_language()
的调用总是返回在{
下面是我正在编写的代码,感谢您的帮助:
class StartupType(models.Model):
__metaclass__ = TransMeta
name = models.CharField(_("Name"), max_length=30, unique=True)
slug = models.SlugField(_("Slug"), max_length=30, unique=True, editable=False)
class Meta:
verbose_name = _("Startup type")
verbose_name_plural = _("Startup types")
translate = (
"name",
)
ordering = [
"name_" + LANGUAGE_CODE,
]
根据documentation可以定义
get_ordering()
方法来使用动态顺序:使用
get_language()
而不是request.LANGUAGE_CODE
也可以这样做。在如果仍然无法获得正确的语言,请确保在
^{pr2}$settings.py
中的会话中间件之后添加了语言环境中间件,例如:编辑:添加了定义模型动态排序的备选方案。在
如果您还想在model类上设置
ordering
,这似乎有点复杂,这是我能想到的最好的方法:这将把
StartupType._meta
(类型为django.db.models.options.Options
的对象)替换为TranslatedOptions
类型的新对象,该对象将ordering
公开为动态属性。在相关问题 更多 >
编程相关推荐