2017-10-12 64 views
1

我有一個Django模型,DateTimeField字段爲「created_at」,現在我想在Django admin中爲該字段添加一個過濾器,但我只需要年份字段而不是默認字段(今天,過去7天,本月,今年)。在Django中添加按年份過濾器admin

這裏是我的模型:

在models.py

class TaggedArticle(models.Model): 
user = models.ForeignKey(User, related_name='tagging') 
email = models.EmailField(max_length=255) 
category_fit = models.CharField(choices=choices, max_length=255) 
article = models.ForeignKey(Article, related_name='articles') 
link = models.URLField(max_length=255,) 
relevant_feedback = models.TextField(blank=True) 
category = models.CharField(max_length=255,) 
created_at = models.DateTimeField(default=timezone.now, editable=False) 

我試圖覆蓋admin.py爲created_at領域:

class TaggedArticle(admin.ModelAdmin): 
    fields = ['category_fit', 'article', 'link', 'relevant_feedback', 'category', 'user', 'email', 'created_at'] 
    list_display = ['article_id', 'link', 'user', 'created_at'] 
    list_filter = ['user', 'email', 'created_at'] 
    model = Tagged 


def created_at(self, obj): 
    return self.Tagged.created_at.year 

admin.site.register(Tagged, TaggedArticle) 

但事實並非如此工作。 我該如何做到這一點? 請幫幫我! 在此先感謝!

回答

0

您可以將date_hierarchy = 'created_at'添加到您的管理員類。

class TaggedArticle(admin.ModelAdmin): 
    date_hierarchy = 'created_at' 
    fields = ['category_fit', 'article', 'link', 'relevant_feedback', 'category', 'user', 'email', 'created_at'] 
    list_display = ['article_id', 'link', 'user', 'created_at'] 
    list_filter = ['user', 'email'] 
    model = Tagged 

它還提供了按月,以更好的方式過濾比自己實現它的能力。

+0

Hi @Cai!它不起作用,仍然顯示所有過濾選項,我只需要顯示年份,它應該顯示所有標籤文章已經創建的所有年份。 –

+0

您可以從list_filter中移除created_at,過濾器將顯示在所有列的頂部。 – Cai

+0

它還顯示幾個月,我怎樣才能顯示只有幾年? –

相關問題