実際にget_fields()
は、ののフィールドを返します。私はこのコードを繰り返し、同じ結果を持っている
>>> from django.contrib.auth.models import User
>>> User._meta.get_fields()
(<ManyToOneRel: admin.logentry>,
<django.db.models.fields.AutoField: id>,
<django.db.models.fields.CharField: password>,
<django.db.models.fields.DateTimeField: last_login>,
<django.db.models.fields.BooleanField: is_superuser>,
<django.db.models.fields.CharField: username>,
<django.db.models.fields.CharField: first_name>,
<django.db.models.fields.CharField: last_name>,
<django.db.models.fields.EmailField: email>,
<django.db.models.fields.BooleanField: is_staff>,
<django.db.models.fields.BooleanField: is_active>,
<django.db.models.fields.DateTimeField: date_joined>,
<django.db.models.fields.related.ManyToManyField: groups>,
<django.db.models.fields.related.ManyToManyField: user_permissions>)
:
はジャンゴexampleに見てみましょう。あなたがより深く行くとsourcesになります 場合は、順序は次のようであることがわかります:再帰的な方法でフェッチ
- 各
parent
フィールドを。
- リモートフィールド。
- ローカルフィールド。
- ローカルの多対多フィールド。
- プライベートフィールド。あなたは、モデル内の他のいくつかの些細なフィールドの前にいくつかの些細なフィールドを定義する場合、あなたは常に
get_fields()
結果に同じ順序でそれを得るだろうと述べている
すべて。
しかし、それは何の警告もなしに、将来的に変更されることができるように、非文書化行動に頼るに注意してください。
テーブルに存在するのと同じ順序でフィールドを取得できるかどうか尋ねていますか?つまり、あなたがSELECT *をしたのと同じオーダーですか?なぜあなたはそれを望んでいますか?何か役に立つものではありません。 – e4c5
私は私が_meta.get_fieldsの注文を()を定義することを可能にするドキュメントに何かがあるかどうかを知りたいe4c5 @ – Mojimi