2016-07-14 8 views
1

モデルを作成するために必要なすべてのフィールドを取得するにはどうすればよいですか?
(Djangoの移行と同じでマイグレーションを実行する前に確認してください?)Django、すべての必須フィールドを取得しますか?

+0

あなたは[ 'get_fields()'](https://docs.djangoproject.com/en/1.9/ref/models/meta/#django.dbを使用することができます。 models.options.Options.get_fields)を使用して、すべてのフィールドを反復処理し、必要なフィールドを確認します。 – solarissmoke

+0

@solarissmoke:どのようにチェックする必要がありますか? n – eugene

答えて

5

あなたはモデルMetaクラスのget_fields()メソッドを使用することができます答えは上記のリスト内包とgetattr()を使用して、より簡潔に、わずかに実装することができ

fields = MyModel._meta.get_fields() 
required_fields = [] 

# Required means `blank` is False 
for f in fields: 
    # Note - if the field doesn't have a `blank` attribute it is probably 
    # a ManyToOne relation (reverse foreign key), which you probably want to ignore. 
    if hasattr(f, 'blank') and f.blank == False: 
     required_fields.append(f) 
0

Falseのデフォルトで:

required_fields = [f for f in MyModel._meta.get_fields() if not getattr(f, 'blank', False) is True] 
関連する問題