2015-12-18 39 views
2

我知道Django的override_settingssmodify_settings修饰器,但是如何覆盖更复杂的设置?如何覆盖测试中的嵌套Django设置

例如,我有这样一个设定:

REST_FRAMEWORK = { 
    ...various keys... 
    'DEFAULT_THROTTLE_RATES = { 
     'anon': '100/day', 
    } 

    ...more keys... 
} 

我要的速率为10000 /天,这样我在本地工作时从来不打他们。 modify_settings只适用于列表,并使用override_settings我不得不重复整个变量(大约50行)。

任何解决方案?

回答

0

您可以使用REST_FRAMEWORK[DEFAULT_THROTTLE_RATES] = { 'anon': '400/day' }在您的本地/测试设置

你必须覆盖整个字典,如果你正在使用@override_setttings。 Django @override_settings does not allow dictionary?

+0

是的,这也是我在几分钟前分析出来的,但我希望有一种方法可以让重写只在测试中才有用。 – mlissner

+0

您是否使用单独的设置进行测试?如果是的话,你可以把这一行放在你的测试设置文件中。 –

+0

不....从未考虑使用单独的设置进行测试,直到现在。这是常见的做法吗?你如何使用不同的测试设置? – mlissner