我有一个元组,INSTALLED_APPS,我想将额外的项目合并到其中,以便在不更改主设置文件的情况下获取元组中的本地应用程序。我走到这一步:
DEFAULT_APPS = list(INSTALLED_APPS)
MY_APPS_LIST = DEFAULT_APPS.append('south')
但是如果我尝试通过运行:
再次将其转换为元组INSTALLED_APPS = tuple(MY_APPS_LIST)
我明白了:
TypeError: 'NoneType' object is not iterable
问题是相当基本的我会说,但我真的找不到这个“方法”,甚至任何对我都有用的方法......我确实发现了list()和tuple Django shell中的()返回该类型的空对象,所以我不明白TypeError可能来自哪里......
帮助表示赞赏!
答案 0 :(得分:8)
append
不会返回新列表 - 它会修改原始列表,返回None
。你想要MY_APPS_LIST = DEFAULT_APPS + ['south']
答案 1 :(得分:3)
list
方法就地运行,因此返回None
。如果要将另一个元素添加到现有列表并仅返回结果,则只需添加它们。
MY_APPS_LIST = DEFAULT_APPS + ['south']
答案 2 :(得分:3)
请注意,可以使用+
来连接元组,因此如果INSTALLED_APPS
是元组:
INSTALLED_APPS = DEFAULT_APPS + ('south',)
INSTALLED_APPS
将是一个元组,其中'south'
为最后一个元素
答案 3 :(得分:1)
list.append
方法不会返回您追加的列表。这是一种就地方法。你应该做的
DEFAULT_APPS = list(INSTALLED_APPS)
DEFAULT_APPS.append('south')
MY_APPS_LIST = DEFAULT_APPS