我的模型具有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
。这是我有一个受控制的选择列表(并且不希望人们添加新项目),并认为为此创建表格是过度的(尽管我可以为此表创建一个夹具,而不是在{{1]中注册模型因此人们不会添加新项目。但是我不知道在更改灯具中的这些值时迁移会如何工作,而在过去我只会碰到我的选择元组模型定义)。
...并创建一个新的自定义字段,我不知道。从长远来看,这似乎是问题,因为我不知道升级Django时的含义,问题等等。
为什么没有内置admin.py
?从长远来看,你认为我认为的两种方法有哪些问题?我打算先做第一次,但我对迁移有点迷失。
答案 0 :(得分:2)
答案 1 :(得分:1)
您似乎不愿意创建一个仅包含List的新表(因为它会“过度杀伤”),但您建议的是在所有>中复制/粘贴相同的值您的表格的条目,在我看来这不是一个好的模型解决方案。
我建议去找ManyToMany(或任何其他实现与另一个表一起使用的技巧)。