django - 为什么 Django 中没有 "ListField"?

标签 django django-models django-admin django-migrations

我有一个带有 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/

相关文章:

Django 静态文件在 Microsoft Azure 中生成后出现 404 错误

python - Unresolved 导入 : models

python - 尝试为 python (psycopg2) 安装 Postgres 时出错

python - Django Rest Framework - 非字段错误自定义消息

django - 如何查询 Django ArrayField 的长度?

python - Django 多个用户配置文件 - 在管理中内联显示用户字段

python - OSError : [WinError 123] The filename, 目录名称或卷标语法不正确: '<frozen importlib._bootstrap>' 对于 django 项目

python - 如何在 python 中的 WSGI 应用程序上设置安全 Cookie

python - 在 Django 表单中保存默认值

python - 如何在 Django Admin 中设置另一个内联标题?