Django import-export 在导出到 csv 时将 manytomany 显示为名称而不是 id
Django import-export display manytomany as a name instead of ids when exporting to csv
如何使用 Django import-export
将 manytomany 列显示为名称列表而不是 ID?
目前我的模型和 resources.py 看起来像这样 returns 一个带有 country
列的 ID 列表的 csv:
models.py
class Country(models.Model):
name = models.CharField(max_length=50, null=False,
blank=False, unique=True)
def __str__(self):
return self.name
class Species(models.Model):
name = models.CharField(max_length=50, null=False, blank=False)
country = models.ManyToManyField(Country)
def __str__(self):
return self.name
resources.py
from import_export import resources,fields
from import_export.widgets import ManyToManyWidget
from .models import Species, Country
class SpeciesResource(resources.ModelResource):
country=fields.Field(attribute='country', widget=ManyToManyWidget(Country), column_name='Country')
name = fields.Field(attribute='name', column_name='Name')
class Meta:
model = Species
fields =('name','country')
export_order = fields
只需在小部件中添加您需要的字段:
widget=ManyToManyWidget(Country, field='name')
如何使用 Django import-export
将 manytomany 列显示为名称列表而不是 ID?
目前我的模型和 resources.py 看起来像这样 returns 一个带有 country
列的 ID 列表的 csv:
models.py
class Country(models.Model):
name = models.CharField(max_length=50, null=False,
blank=False, unique=True)
def __str__(self):
return self.name
class Species(models.Model):
name = models.CharField(max_length=50, null=False, blank=False)
country = models.ManyToManyField(Country)
def __str__(self):
return self.name
resources.py
from import_export import resources,fields
from import_export.widgets import ManyToManyWidget
from .models import Species, Country
class SpeciesResource(resources.ModelResource):
country=fields.Field(attribute='country', widget=ManyToManyWidget(Country), column_name='Country')
name = fields.Field(attribute='name', column_name='Name')
class Meta:
model = Species
fields =('name','country')
export_order = fields
只需在小部件中添加您需要的字段:
widget=ManyToManyWidget(Country, field='name')