2016-10-17 9 views
0

私はアイテムのリストに基づいてIntegerFieldを持つモデルを持っています。機能をDjango管理者のフィールドのようにするには?

LIST = (
    (0, 'None'), 
    (1, 'Male'), 
    (2, 'Female'), 
) 

class MyModel(models.Model): 
    gender = models.IntegerField(choices=LIST, default=0) 
    some_unimportant_value1 ... 
    some_unimportant_value2 ... 

また、ジェンダーにまだ値が割り当てられていない場合は、Falseを返す関数がMyModelクラスにあります。 Djangoの管理区域内MyModelsのリストを表示しているとき

def genderHasValue(self): 
     if self.gender == 0: 
      return False 

、私はgenderHasValue関数の計算結果を見ることができるようにしたいと思います。たとえば、mymodelというためのDjangoの管理領域は次のようになります。

some_unimportant_value1 some_unimportant_value2 genderHasValue 
123      456      N 
789      012      Y 

これはsome_unimportant_value1行はそのIntegerFieldととして0を持っていると仮定して、some_unimportant_value2行は、そのIntegerFieldととして1を有しています。

genderHasValue関数を使用してこれを行うことはできますか?

ありがとうございます。

答えて

2

はい、これは次のように行うことができます。コメントであなたのフォローアップの質問に答えるために :はい、それは可能であるが、ちょうどこの置く:

genderHasValue.short_description = "Gender Has Value"

# admin.py 
class MyModelAdmin(admin.ModelAdmin): 
    list_display = ['some_unimportant_value1', 'some_unimportant_value1', 'genderHasValue'] 

    def genderHasValue(self, obj): 
     if self.gender == 0: 
      return False 
     return True 

# The file where you configure your admin 
admin.site.register(MyModel, MyModelAdmin) 

UPDATEプロパティ定義の後

+2

メソッドを管理クラスに移動する必要はありません。 list_displayで直接モデルメソッドを名前で参照することができます。 –

+0

両方の返信に感謝します。質問:関数に冗長な名前を付けることは可能なのでしょうか? "GENDERHASVALUE"ではなく見出しの値が良いですか? –

+1

@TomBrock:更新された回答を見る –

関連する問題