[解決済み] Django でモデルのフィールドを取得する
質問
Django のモデルがあるとして、そのすべてのフィールドをリストアップしようと しています。 モデル属性の _meta を使ってこれを行う例をいくつか見ましたが、meta の前にあるアンダースコアは、 _meta 属性がプライベート属性であり、直接アクセスしてはいけないということを示していませんか? ... 例えば、将来的に_metaのレイアウトが変わって、安定したAPIにならない可能性があるから?
_metaは例外なのでしょうか? 安定していてすぐに使えるのか、それともアクセスするのはバッドプラクティスとされるのか? あるいは、_meta属性を使わずにモデルのフィールドをイントロスペクトする関数や他の方法があるのでしょうか? 以下は、_meta属性を使用してこれを行う方法を示すいくつかのリンクのリストです。
何かアドバイスがあれば、よろしくお願いします。
http://www.djangofoo.com/80/get-list-model-fields
django のモデルフィールドをイントロスペクトする方法は?
どのように解決するのですか?
_meta
は非公開ですが、比較的安定しています。これを正式に文書化し、アンダースコアを削除しようとする努力がなされていますが、それは1.3か1.4の前に行われるかもしれません。多くの人がこれを使用しているため、後方互換性を確保するための努力がなされると思います。
特に互換性を重視するのであれば、モデルを受け取ってフィールドを返す関数を書くとよいでしょう。そうすれば、将来的に何かが変わっても、ひとつの関数を変更するだけで済みます。
def get_model_fields(model):
return model._meta.fields
のリストが返されると思います。
Field
オブジェクトを作成します。インスタンスから各フィールドの値を取得するには
getattr(instance, field.name)
.
更新: Django の貢献者は、Google Summer of Code の一環として、_Meta オブジェクトを置き換える API の開発に取り組んでいます。見てください。
-
https://groups.google.com/forum/#!topic/django-developers/hD4roZq0wyk
-
https://code.djangoproject.com/wiki/new_meta_api
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] 2つのフィールド「unique」をカップルとして定義する方法
-
[解決済み] Djangoの "slug "とは何ですか?
-
[解決済み] Django のモデルで on_delete は何をするのですか?
-
[解決済み] django の OneToOneField と ForeignKey の違いは何ですか?
-
[解決済み] Django のカスタムフィールドで User モデルを拡張する
-
[解決済み] RuntimeWarning: DateTimeFieldがナイーブなdatetimeを受信した
-
[解決済み] Django テンプレート内で現在の URL を取得する方法は?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】Django: モデルフィールドのリストを取得しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
django request.data を修正する AttributeError: 属性を設定できない
-
オペレーショナルエラーです。1050 解決
-
[解決済み] Django vs. Model View Controller [終了しました]。
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み】Django: モデルフィールドのリストを取得しますか?
-
[解決済み] django で複数のオブジェクトを削除する
-
[解決済み] Django は静的ファイルの URL をビューで取得します。
-
[解決済み] DjangoのRest Frameworkはcsrfを削除します。
-
[解決済み] 学習に適したオープンソースのdjangoプロジェクト【非公開
-
[解決済み] django-tastypie と djangorestframework の違いは何ですか?[クローズド]