我有一个旋转木马,它由一个拥有多个图片模型的图库模型组成。图片模型如下所示:
class Picture(models.Model):
gallery = models.ForeignKey(Gallery)
image = models.ImageField(upload_to="uploads/images/")
title = models.CharField(max_length=30, null=True, blank=True)
tagline = models.CharField(max_length=30)
description = models.CharField(max_length=100)
page_link = PageField(related_name="Page", null=True, blank=True)
由于网站有3种语言,管理员如何为所有语言使用相同的轮播,具有相同的图像,但文本的翻译不同?
必须有一种比使用title_en,title_de等更好的方法,对吧?
答案 0 :(得分:2)
我强烈推荐django-hvad。
这是你的models.py作为一个hvad TranslatableModel
:
class Picture(TranslatableModel):
translations = TranslatedFields(
title = models.CharField(max_length=30, null=True, blank=True)
tagline = models.CharField(max_length=30)
description = models.CharField(max_length=100)
)
gallery = models.ForeignKey(Gallery)
image = models.ImageField(upload_to="uploads/images/")
page_link = PageField(related_name="Page", null=True, blank=True)
def __unicode__(self):
return self.lazy_translation_getter('title', self.pk)
正如文档中所提到的,这个应用程序仍处于测试阶段,但我已经在许多生产环境中使用它并且运行良好。
要记住的一件事是它确实带来了一些限制。
它的工作方式是创建一个名为PictureTranslation
的模型(或类似的模型),它将包含您的三个字段title
,tagline
,description
和一个{ {1}}至ForeignKey
。
只要picture_instance能够识别语言,您仍然可以Picture
。
如果您愿意,我可以根据您的具体用例提供更好的解释。