如何使用 django-import-export 导出按不同列排序的记录?
How to using django-import-export to export records sorted by a different column?
我按照 https://django-import-export.readthedocs.io/ 中的文档使用 django-import-export
包导出我的国家/地区模型:
class Country(models.Model):
class Meta:
db_table = 'country'
verbose_name_plural = 'countries'
ordering = ['iso_code']
iso_code = models.CharField(
verbose_name='ISO code',
help_text='2-character ISO country code',
max_length=2,
blank=False,
)
un_code = models.CharField(
verbose_name='UN code',
help_text='3-character UN country code',
max_length=3,
blank=False,
)
english_name = models.CharField(
verbose_name='English name',
help_text='Country name in English',
max_length=100,
blank=False,
)
国家模型的资源是:
class CountryResource(resources.ModelResource):
class Meta:
model = Country
export_order = ('id', 'iso_code', 'un_code', 'english_name')
要导出模型,我 运行:
>>> dataset = CountryResource().export()
>>> print(dataset.csv)
结果(部分):
id,iso_code,un_code,english_name
6,AD,AND,Andorra
217,AE,ARE,United Arab Emirates
1,AF,AFG,Afghanistan
8,AI,AIA,Anguilla
请注意,结果按国家/地区模型的元 class 中给出的 iso_code
列排序。但是,在不更改模型的 Meta class 中指定的顺序的情况下,我只想在导出期间导出按另一列排序的记录。例如,我想导出的记录按 id
排序。我怎样才能做到这一点?谢谢。
您可以重新定义 get_queryset
方法并根据需要对查询集进行排序
class CountryResource(resources.ModelResource):
class Meta:
model = Country
export_order = ('id', 'iso_code', 'un_code', 'english_name')
def get_queryset(self):
return self._meta.model.objects.order_by('id')
我按照 https://django-import-export.readthedocs.io/ 中的文档使用 django-import-export
包导出我的国家/地区模型:
class Country(models.Model):
class Meta:
db_table = 'country'
verbose_name_plural = 'countries'
ordering = ['iso_code']
iso_code = models.CharField(
verbose_name='ISO code',
help_text='2-character ISO country code',
max_length=2,
blank=False,
)
un_code = models.CharField(
verbose_name='UN code',
help_text='3-character UN country code',
max_length=3,
blank=False,
)
english_name = models.CharField(
verbose_name='English name',
help_text='Country name in English',
max_length=100,
blank=False,
)
国家模型的资源是:
class CountryResource(resources.ModelResource):
class Meta:
model = Country
export_order = ('id', 'iso_code', 'un_code', 'english_name')
要导出模型,我 运行:
>>> dataset = CountryResource().export()
>>> print(dataset.csv)
结果(部分):
id,iso_code,un_code,english_name
6,AD,AND,Andorra
217,AE,ARE,United Arab Emirates
1,AF,AFG,Afghanistan
8,AI,AIA,Anguilla
请注意,结果按国家/地区模型的元 class 中给出的 iso_code
列排序。但是,在不更改模型的 Meta class 中指定的顺序的情况下,我只想在导出期间导出按另一列排序的记录。例如,我想导出的记录按 id
排序。我怎样才能做到这一点?谢谢。
您可以重新定义 get_queryset
方法并根据需要对查询集进行排序
class CountryResource(resources.ModelResource):
class Meta:
model = Country
export_order = ('id', 'iso_code', 'un_code', 'english_name')
def get_queryset(self):
return self._meta.model.objects.order_by('id')