2016-12-09 22 views
-1

マイmodels.pyの属性を表示するには、モデルオブジェクトを取得できませんはDjangoの管理ページ

class DepartementAdmin(admin.ModelAdmin): 
    list_display = ('departNumber', 'departName') 

admin.site.register(Departement, DepartementAdmin) 

問題がある、私は、任意の「デパート」を取得することはできませんオブジェクト。私は.get()、.filter()または.all()を試しました。どちらの場合も、部門番号が返され、印刷されません。

<Departement: Departement object> 

何が間違っていますか?

編集:具体的には、データベースには、部門名と番号を含むテーブル「Departement」があります。例えば、私が入力した場合:

Departement.objects.filter(departNumber=2) 

は、それが私に「ヴァール」以来の「ヴァール」である主キーとして2と部門ですdepartNameを与える必要があります。

+0

あなたが何を求めているのか分かりません。あなたはDepartmentオブジェクトを持っています。 –

+0

さて、これは* Departmentオブジェクトです。 – lucasnadalutti

+0

def __unicode __(self): クラス内のself.departNumberを返します。それが印刷部門ではない理由です。 –

答えて

0

__unicode__から__str__の方法を変更して参照してください。それはあなたがここで提案しています何ができるのpython 2と互換性を持たせるためにはPython 3

class Departement(models.Model): 
    departNumber = models.PositiveSmallIntegerField(default=0, primary_key= True) 
    departName = models.CharField(max_length=100) 

    def __str__(self): 
     return self.departNumber 

で動作します: https://docs.djangoproject.com/en/1.10/ref/models/instances/

0

あなたが言う:

Departement.objects.filter(departNumber=2)は私にdepartNameを与える必要があります 「Var」は2を主キーとする部門であるため、「Var」です。

だから、(__unicode__メソッドの実装は現在、部門番号を返すにもかかわらず)部門名を返すために__unicode__方法に依存しています。

なぜ属性に直接アクセスしないのですか?

dept = Departement.objects.filter(departNumber=2) 
dept.departName 

長期的にはより保守的なコードになります。回答するが、

ここで説明したように、我々は3が、その後__str__にメソッドの名前を変更する場合は、Python 2または3

を使用しているかどうかを知る必要があり働いていない理由をWhy __unicode__doesn't work but __str__ does?

+0

私はPython 3を使用しています。 'dept = Departement.objects.filter(departNumber = 2)' 'dept.departName'はエラーを返します。 @トニー –

+0

どのようなエラーが表示されますか? – Tony