基于自定义条件的 Django 管理操作

Django admin actions based on custom conditions

我有一个用户模型,其中包含 user_name、电子邮件和 created_on 等字段。我尝试了以下代码将用户数据导出为 csv 格式

使用以下代码我可以下载选定的用户数据。是否可以利用此功能按时间段(created_on)下载用户列表?

def export_as_csv(self, request, queryset):
   meta = self.model._meta
   field_names = [field.name for field in meta.fields]
   response = HttpResponse(content_type='text/csv')
   response['Content-Disposition'] = 'attachment; filename={}.csv'.format(meta)
   writer = csv.writer(response)
   writer.writerow(["first_name", "email", "created_on"])
   for obj in queryset:
       row = writer.writerow([obj.first_name, obj.email, obj.created_on)
   return response


class UserAdmin(admin.ModelAdmin):
    actions = [export_as_csv]
    list_display = ('created_on','email', 'first_name')

是的,有可能。 您可以从选定的查询集中查询 greater/less:

import datetime
queryset.filter(created_on__gt=datetime.datetime.now()) 

但我认为没有理由这样做..我认为更好的主意是使用一些第三方库,如: https://pypi.org/project/django-admin-rangefilter/

然后在管理列表中过滤您的记录,然后在不做任何更改的情况下使用您的功能