[英]Exporting field data in many to many relationships using django-input-output only shows primary key
我正在尝试使用 django-import-export package 从 django 管理页面从我的数据库中导出数据。 当我导出 model 时,我还想以多对多关系显示每个 object 的特定字段中的数据。
它看起来像这样:
模型.py
class Item(models.Model):
part_number = models.CharField(max_length=50, unique=True)
description = models.CharField(max_length=250, blank=True)
def __str__(self):
return self.part_number
class Bin(models.Model):
name = models.CharField(max_length=50, unique=True)
items = models.ManyToManyField(Item, blank=True)
def __str__(self):
return self.name
管理员.py
class ItemResource(ModelResource):
class Meta:
model = Item
fields = ('part_number', 'description')
@admin.register(Item)
class ItemAdmin(ImportExportModelAdmin):
save_as = True
resource_class = ItemResource
class BinResource(ModelResource):
class Meta:
model = Bin
fields = ('name', 'item__part_number')
@admin.register(Item)
class ItemAdmin(ImportExportModelAdmin):
save_as = True
resource_class = BinResource
我希望它起作用的方式是,如果我导出项目,我将得到一个文档,其中一列中包含所有部件号,另一列中包含描述。 这工作得很好。 但是,我也希望当我导出 Bins 时,一列会显示所有名称,而另一列会显示与 bin 关联的项目的所有部件号的列表。 我实际上得到的是一个名为 part_number 的列,但任何列中都没有任何内容。
如果我将fields = ('name', 'item__part_number')
替换为fields = ('name', 'item')
,将会有一个标题为 item 的列,但它将包含一个主键列表,这没有帮助。 如何导出它以显示我正在寻找的相关字段中的信息?
请注意,我在使用外键之前已经这样做了,我只是无法让多对多字段工作。 我在文档中找不到任何地方显示如何使用 dunder 表示法表示各种 model 关系。
如果您希望导出的 m2m 列包含不同的字段,您可以在字段上声明ManyToManyWidget
时简单地传递字段名称。
例如:
class BinResource(ModelResource):
item = Field(
attribute='item',
widget=ManyToManyWidget(Category, field='part_number',
separator='|')
)
class Meta:
model = Bin
fields = ('name', 'item')
这将导致part_number
显示在导出的列中,而不是id
,例如:
name,item
name1,part1|part2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.