繁体   English   中英

在Django admin中按年添加过滤器

[英]Add filter by year in Django admin

我有一个带有DateTimeField字段的Django模型为“created_at”,现在我想在Django admin中为该字段添加一个过滤器,但我只需要年份字段而不是默认字段(今天,过去7天,本月,今年) )。

这是我的模特:

在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)

但它不起作用。 我怎样才能做到这一点? 请帮帮我! 提前致谢!

使用django-daterange-filter包过滤年份。

并参考django-list-filter文档。

愿这对你有所帮助

您可以将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

它还提供了按月,以比我们自己实现它更好的方式过滤的能力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM