更好的办法从环比当地人创造一流的字典项()
问题描述:
有人告诉我,这是不好的形式使用当地人()在Python中动态创建变量。但是,我正在写(使用Django和鹡鸰)一类的,我真的需要这些东西在类字典中去,又名class
声明的局部变量,而不是在一个单独的数据结构:更好的办法从环比当地人创造一流的字典项()
class BlogPage(Page):
for language in languages:
locals()['body_' + language] = RichTextField(blank=True)
我不认为我可以setattr
类语句后设置这些,或者说,是因为Django的元类的处理将已经被随后发生的事情。
有没有更好的方法?
答
与具有不同的语言模型的属性的问题是,改变语言需要迁移数据库。如果你能提供帮助,这不是你想做的事情。
解决这个正确的方法是使用Google地图页面,并以适当的内容的语言都有一个单独的模型。
class BlogPageTranslation(model.Model):
language = TextField()
blogpage = ForeignKey(BlogPage)
content = RichTextField()
然后查询时,页面的外观与所需的语言,一个健全的默认翻译,然后采取相应的行。
xlatcontents = BlogPageTranslation.filter(blogpage=Page,
language__in=[someLanguage, 'en'])
somethingsomething(xlatcontents, someLanguage)
使用字典或许。 –
...还好,一类说法,特别是如果确实元类的任何重要的工作(这似乎相当有可能在这里),'当地人()'实际上可能是合理的(并可能实际工作,不像'修改当地人()'在一个函数中)。 – user2357112
更好的方法**是不要这样做,并使用某种容器**。 –