2011-08-22 87 views
0

我目前以编程方式调用dumpdata以从我的django应用程序中导出数据。以编程方式调用call_command('dumpdata')后忽略语言设置

from django.core.management import call_command 
# and various other imports not directly relevant 

response = HttpResponse(mimetype='application/json',) 
response['Content-Disposition'] = "filename=%s" % backup_name 
sys.stdout = response 
call_command('dumpdata') 

出口效果很好(如果稍微慢)但事后settings.LANGUAGE_CODE被忽略,所有的页面恢复回原来的语言英语。任何想法为什么发生这种情况?

我使用了以下内容: - Python 2.7版 - Django的1.3 - 罗塞塔管理语言翻译

回答

2

这可能是由代码在django.core.management.base.BaseCommand对象引起的。在代码中的解释是:

# Switch to English, because django-admin.py creates database content 
# like permissions, and those shouldn't contain any translations. 
# But only do this if we can assume we have a working settings file, 
# because django.utils.translation requires settings. 

来完成实际的语言切换是代码:

from django.utils import translation 
translation.activate('en-us') 
+0

谢谢,帮助解决问题。 我已经按照上面的代码使用:'translate.activate(settings.LANGUAGE_CODE)' – macdhuibh

+0

如果用户在会话中更改了它,是否会产生正确的语言? –

相关问题