2011-10-29 12 views
0

私のアプリケーションでは、管理リストページをソートするリンクを追加する必要があります。ソートは、list_displayにないフィールドに基づいて行わなければなりません。Djangoの管理者変更リストにソーターを追加するには

私のモデルは

class Page(models.Model): 
    title = models.CharField(max_length=40) 
    published_on = models.DateTimeField('Date Published') 
    created_on = models.DateTimeField('Date Created') 

で、私のadminファイルは、私はちょうどリンクを追加する必要が

class PageAdmin(PageModelAdmin): 
    list_display = ('title', 'published_on') 
core.site.register(Page, PageAdmin) 

であるCREATED_ONに基づいてリストをソートするには、adminリストページに「最近追加」 list_displayには追加されません。任意の提案をお願いします。

+0

私が間違っている場合は、 'created_on'を' list_display'に追加せずに並べ替える方法を尋ねますか? – jsvk

答えて

0

あなたは何を意味するのか推測します。

何を望んでいたことは、あなたのlist_displayにそれを追加することなく、created_onためのフィルタを追加した場合は、単にいくつかのオプションがありますlist_filter

class PageAdmin(PageModelAdmin): 
    list_display = ('title', 'published_on') 
    list_filter = ('created_on',) # The comma is important here 
admin.site.register(Page, PageAdmin) 
+0

はいそれをlist_displayに追加せずにcreated_onでソートしたいです。私はそれをフィルタとして追加しようとしましたが、どのように並べ替えることができますか?私の要件は、管理者リストページにリンクがあります。リンクをクリックすると、リストは降順でソートされ、最近追加されたものが表示されます。 – Fresher

+0

コードを投稿したり、エラーを投稿したりできますか?私はこれを試して、管理ページの項目は、列が存在することなく、細かくソートされています – jsvk

0

として追加します。あなたは常にあなたのページをソートしたい場合、あなたはすべてがこの詳細について

class Page(...): 
    field = ... 

    class Meta: 
     ordering = ['published_on'] 

を照会し、あなたはまた、あなたの特定のためのクエリセットをオーバーライドすることができますthe docs

を見るためにそれらを注文するであろう、あなたのモデルにorderingを追加することができますmodelAdmin:

class PageAdmin(...): 
    list_display = ... 

    def queryset(self, request): 
     qs = super(PageAdmin, self).queryset(request) 
     return qs.order_by('published_on') 

これは注文が設定されていない場合にのみ機能しますが、今は覚えられません。これについての情報はthe docs,にあります(申し訳ありません、メソッドへの直接リンクはありません)

関連する問題