2017-01-14 16 views
0

私はdjangoを初めて使っています。私の問題は、私は1つのフィールドのモデルでmultiselectを使用しているということです。私は、list_displayを使ってadminにそのフィールドを表示しようとしているとき、unhashable type:listのエラーを出しています。助けてください。は、djangoの管理者のフィールドリストを表示しています

私のmodels.py ::

language = MultiSelectField(
       choices = LANG_CHOICES, 
       null = False, 
       blank = False, 
       ) 

私のadmin.py ::

from django.contrib import admin 
from .models import Newspapers 

class NewspaperAdmin(admin.ModelAdmin): 

    list_display = ['id','language','title','price'] 

とエラーは次のとおりです。

TypeError at /admin/newspapers/newspapers/ 
unhashable type: 'list' 
+0

投稿する – e4c5

答えて

0

は、より効果的に言語を定義する関数を作成しますdjango ..そしてそれをlist_displayで使うよりも。

from django.contrib import admin 
from .models import Newspapers 

class NewspaperAdmin(admin.ModelAdmin): 

    list_display = ('id','get_languages','title','price') 

    def get_languages(self, obj): 
     return ",".join([l for l in obj.language]) 
+0

何も変わっていません。同じエラーが表示されています。エラーは言語フィールドのためだけです。リスト表示から言語を削除すると正常に動作します。 –

+0

言語を削除して、問題が彼のものかどうかを確認できますか?あなたのマルチプレースフィールドは、コンマで区切られた値のCharFieldとして保存されます。 – Wilfried

+0

助けてくれてありがとう..これはちょっと変わってしまいました。これを適用した後のエラーは 'リスト'に変更されました。オブジェクトには属性「all」はありません。だから、私はすべてを取り除こうとしました()..それは働いた...ここで何が起こったのか説明できますか? –

関連する問題