2016-08-02 8 views
0

私はDjango管理サイトのlist_displayカスタムメソッドの例に従っていますが、 'colored_name()は正確に1つの引数(2が指定されています)'というエラーを受け取ります。 ?メソッドを使用してadminカスタムフィールドを追加する方法

class Person(models.Model): 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 
    color_code = models.CharField(max_length=6) 

def colored_name(self): 
    return format_html(
     '<span style="color: #{};">{} {}</span>', 
     self.color_code, 
     self.first_name, 
     self.last_name, 
    ) 

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('first_name', 'last_name', 'colored_name') 
+0

「Person」の管理者コードは何ですか。 –

+0

あなたのコードをコメントセクションに投稿しないでください。あなたの質問を関連コードで修正してください。あなたはまた、トレースバックを共有することはできますか? –

+0

完全なトレースバックを投稿し、コードインデントを修正してください。 – Alasdair

答えて

1

それは管理パネルに使用される方法ですので、あなたは、colored_namePerson ModelないPersonAdmin class内を定義する必要があります。また、personインスタンスを表すobj引数を受け取ります。

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('first_name', 'last_name', 'colored_name') 

    def colored_name(self, obj): 
     return format_html(
      '<span style="color: #{};">{} {}</span>', 
      obj.color_code, 
      obj.first_name, 
      obj.last_name, 
     ) 
関連する問題