かぴぶろぐ

またかぴったかと思った・・・(´A`;)

Django Admin list_displayの「ManyToManyField」表示について

カテゴリ[ django ]
Adminのlist_displayはManyToManyFieldを表示できない。
そこで、カスタムメソッドを使って表示するやり方。
def selected_tags(self):
    '''return selected tags'''
    tag_titles = []
    for tag_obj in self.tags.all():
        tag_titles.append(tag_obj.title)
    return tag_titles
これを
list_display = ('title', 'url', 'selected_tags')
みたいにして読ませる。
Djangoの管理画面のたぶん直前まで来たさんより

更に、ちょっと工夫して2つ以上の要素がある場合に「...」とするやり方。
def selected_domain(self):
    """ ManyToManyFieldを返す """
    domain_titles = []
    for cnt in range(len(self.domain.all())):
    if cnt < 2:
    domain_titles.append(self.domain.all()[cnt].domain)

    domain_titles= str(domain_titles) + ' ...'
    return self.cooked_MtMList(domain_titles)

def cooked_MtMList(self, str):

    import re
    p = re.compile( "\[|\]|u'|'")
    str = p.sub('',str)
    return str
こんな感じ。これでManyToManyFieldも安心やぁ~(´∀`)

http://kapi.jp/kapi_blog/88

2007年11月25日

関連カテゴリ django

この記事のコメント

この記事にコメントする