2011-11-14 16 views
0

Countryクラスに3フィールドがあります。models.pyです。私は管理者にログインし、国を追加manage.py syncdbを実行した後Djangoの管理者は、表示されるフィールドをどのように決定するのですか

from jobs.models import * 
from django.contrib import admin 

admin.site.register(Country) 
admin.site.register(City) 

:私はその後admin.pyで次のコードを使用していました。保存すると、国名は表示されず、リストには "Country Object"が表示され、外部キーとして追加されるドロップダウンが表示されます。 Djangoは、リスティングと選択ボックスに表示するフィールドをどのように決定するのですか?

答えて

3

これはすべてあなたの__unicode__メソッドに依存します。これは、管理リストまたは外部キーリンク内の各モデルインスタンスに対して表示される内容を定義します。

class Mymodel(Model) 
    field1 = CharField() 
    field3 = CharField() 
    field3 = CharField() 

    def __unicode__(self): 
     return self.field1 

>>> Mymodel.objects.get(pk=1) 
"contents of field1 that will show up for all related fields in admin" 
+0

ありがとうが、fieldnameは 'self.field1'として返されます – Hafiz

1

try __unicode__モデルの方法を変更してください。これは最も簡単な方法です。

さらに列を追加する場合は、ModelAdminから継承するクラスを作成し、list_displayプロパティを定義する必要があります。そして、あなたはこのようにそれをリンクすることができます。

admin.site.register(Country, CountryAdmin) 
admin.site.register(City, CityAdmin) 

あなたが詳細hereを見つけることができます。

関連する問題