我有一个带有 Charfield
的模型(让我们将它命名为 优点 ),带有 choices
属性。过了一会儿,我决定这个字段应该“升级”到某种 ListField
,因为可以选择多个选项。
根据我的搜索,我有两个选择:
1 - 创建一个新模型,并在引用此新模型的第一个模型中使用 ManyToManyField。这样,将呈现 admin 中使用的“多选”默认字段。生活很好。
2- 创建一个自定义字段,将我的字段保存为带有某种分隔符的字符串。
这两种方法总结在 What is the most efficent way to store a list in the Django models?以及更多示例中的第二种方法:How to create list field in 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
?从长远来看,您认为我想到的两种方法有哪些问题?我打算做第一个,但我对迁移有点迷茫。
最佳答案
关于django - 为什么 Django 中没有 "ListField"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24482720/