Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django自定义查询集和导出_Python_Django_Django Models - Fatal编程技术网

Python Django自定义查询集和导出

Python Django自定义查询集和导出,python,django,django-models,Python,Django,Django Models,我有一个定制的django queryset类,我将其与定制管理器一起使用,以轻松地使用链接过滤对象 我想将自定义方法添加到此类中,以将其结果保存为文件 然而,我不确定我是否做对了。 我怎样才能用as_file方法获取内部对象的列表 class EntryQuerySet(models.QuerySet): def as_file(self, filename='export.xls'): # data = ??? how can I get results here??

我有一个定制的django queryset类,我将其与定制管理器一起使用,以轻松地使用链接过滤对象

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

然而,我不确定我是否做对了。 我怎样才能用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