我有一个带有属性的模型Charfield
(让我们将其命名为优点)。choices
一段时间后,我决定应该将该字段“升级”为某种ListField
,因为可以选择多个选项。
根据我的搜索,我有两个选择:
1 - 创建一个新模型,并在引用此新模型的第一个模型中使用 ManyToManyField。这样,将呈现 admin 中使用的“多选”默认字段。生活很好。
2-创建一个自定义字段,将我的字段保存为带有某种分隔符的字符串。
这两种方法在 Django 模型中存储列表的最有效方法是什么?以及更多示例中的第二种方法:如何在 django 中创建列表字段,http : //cramer.io/2008/08/08/custom-fields-in-django/,https: //djangosnippets.org/snippets/1200 / , https://djangosnippets.org/snippets/1491/
事实是:我不想创建另一个模型只是为了拥有ManyToManyField
. 这是我拥有的选择的受控列表(并且不希望人们添加新项目)并认为为此创建一个表是多余的(尽管我可以为该表创建一个固定装置而不在中注册模型admin.py
,所以人们不会添加新项目。但是我不知道在更改固定装置中的这些值时迁移将如何工作,而在过去我只是偶然在我的模型定义中选择元组)。
...并创建一个新的自定义字段,我不知道。从长远来看,这似乎是个问题,因为我不知道其含义、升级 Django 时的问题等。
为什么没有内置ListField
?从长远来看,我正在考虑的两种方法有哪些问题?我打算做第一个,但我对迁移有点迷茫。