我差不多了。
型号:
class Child(models.Model):
parent = models.ForeignKey('project.Parent')
name = models.CharField(max_length=100)
class Parent(models.Model):
text = models.CharField(max_length=100)
资源:
class ParentResource(resources.ModelResource):
children = fields.Field(widget=widgets.ForeignKeyWidget(Parent))
class Meta:
model = Parent
use_transactions = True
fields = ('text', 'children__child__name')
然后视图调用资源并下载它。问题是,名称是空白的。所以,其他一切都很好,但我不能让child.name显示出来。我错过了什么?
答案 0 :(得分:0)
首先, modelA 使用widgets.ForeignKeyWidget
来查找相关的 modelB 的一个ForeignKey > MODELA 强>
即。 ChildResource
widgets.ForeignKeyWidget
可以使用Parent
查找Childs
,但反之亦然。
反向执行,即循环和/或显示一组Parent
(具有 ForeignKey ParentResource
)的一些字段来自{{1你需要做这样的事情:
from import_export import fields, resources
from .models import Parent
class ParentResource(resources.ModelResource):
children = fields.Field()
class Meta:
model = Parent
use_transactions = True
fields = ('text', 'children')
def dehydrate_children(self, parent):
children = list(parent.child_set.all())
return ','.join([child.name for child in children])
使用dehygrate()
方法。然后,当您导出ParentResource
时,您将获得一个带有" children"的数据集对象。 key,其值是以逗号分隔的子项名称列表。