我在下面有这个功能,我还需要在翻译之前检查每个变量是否都没有。
def save(self):
# add an an if condition to check all the below variables if they are none
# if self.name_es or ..... is not None:
self.name_es = translateField(self.name, 'es') if not None
self.name_ar = translateField(self.name, 'ar')
self.description_es = translateField(self.description, 'es')
self.description_ar = translateField(self.description, 'ar')
super(City, self).save()
这是翻译功能:
def translateField(text, lang):
try:
return client.translate(text, lang)
except:
pass
问题是我在模型中的许多类中都有上述内容。在每个保存功能中,我对不同的变量做同样的事情。
我可以在这做什么来减少代码量? ' _es'和' _ar'总是附加到我需要返回翻译输出的这些变量。
答案 0 :(得分:1)
使用setattr
:
for lang in ["es", "ar"]:
setattr(self, "name_" + lang, translateField(self.name, lang))
setattr(self, "description_" + lang, translateField(self.description, 'es'))
如果您有很多字段以及许多语言,那么您甚至可以将其作为嵌套循环。
我可以警告bare except
clauses吗?