python - Django 自定义查询集和导出

标签 python django django-models

我有一个自定义的 Django 查询集类,我将其与自定义管理器一起使用,以通过链接轻松过滤对象。

我想向此类添加自定义方法以将其结果保存为文件。

但是,我不确定我这样做是否正确。 如何获取 as_file 方法中的对象列表?

class EntryQuerySet(models.QuerySet):
    def as_file(self, filename='export.xls'):
        # data = ??? how can I get results here???            print('exporting as {}'.format(filename)) 

    def active(self):
        return self.filter(status__in=[1, 4, 5])

    def with_email(self):
        return self.filter(contact__email__isnull=False)

    def by_city(self, city):
        return self.filter(address__city__icontains=city)

    def in_next_days(self, days=7):
        now = datetime.datetime.today()
        delta = now + relativedelta.relativedelta(days=days)
        return self.filter(start_date__gte=now, start_date__lte=delta)

    def in_last_days(self, days=7):
        now = datetime.datetime.today()
        delta = now - relativedelta.relativedelta(days=days)
        return self.filter(start_date__gte=delta, start_date__lte=now)


class EntryManager(models.Manager):
    def get_queryset(self):
        return EntryQuerySet(self.model, using=self._db)

    def active(self):
        return self.get_queryset().active()

    def by_city(self, city):
        return self.get_queryset().by_city(city)

    def with_email(self):
        return self.get_queryset().with_email()

    def in_next_days(self, days):
        return self.get_queryset().in_next_days(days)

    def in_last_days(self, days):
        return self.get_queryset().in_last_days(days)

我使用它如下:

entries = Entry.objects.active().by_city('My city').in_next_days(5)

我想要这样的东西:

entries = Entry.objects.active().by_city('My city').in_next_days(5).as_file('myfilename.xls')

我怎样才能做到这一点?

最佳答案

实际上,我发现它就像运行一样简单:

def as_file(self, filename='eksport.xls'):
    data = self.all()
    #do some processing here

关于python - Django 自定义查询集和导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47221517/

相关文章:

c++ - 在 C++ 中导入带有扩展的 Python

python - 使用 Twilio 服务在 Arduino Yun 上接收短信

django - 尝试制作一个看起来不像我的模型的 django Rest api

python - 子文件夹中的 Django 迁移

django - 在 Django 中子类化现有模型

python - Pandas,如何将系列添加到 DataFrame 列,其中系列索引与 DataFrame 列匹配?

python - virtualenv 中的 IPython Notebook,使用 Python 3.3

django - Heroku 创建了表,但是当我要迁移时,他说没有创建

python - 如何将 http 方法限制为 Django REST api

django - 如何使用 Django ModelForm 生成下拉输入?