私は、属性を持つ(利点Charfield
と名付けましょう)を持つモデルを持っています。しばらくして、複数の選択肢を選択できるため、このフィールドをある種の に「アップグレード」する必要があると判断しました。choices
ListField
私が検索したものから、2つのオプションがあります。
1 - 新しいモデルを作成し、この新しいモデルを参照する最初のモデルで ManyToManyField を使用します。このようにして、admin で使用される「複数選択」デフォルト フィールドがレンダリングされます。人生は素晴らしい。
2-フィールドをある種のセパレーター付きの文字列として保存するカスタムフィールドを作成します。
これらの 2 つのアプローチは、リストを Django モデルに保存する最も効率的な方法は何ですか?にまとめられています。その他の例の 2 番目のアプローチ: 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
ですか?私が考えている 2 つのアプローチについて、長期的にはどのような問題があると思いますか? 私は最初のことを計画していますが、移行について少し迷っています。