【发布时间】:2019-10-09 09:36:51
【问题描述】:
当尝试通过 excel 导入数据时,代码只从数据库中读取第一个条目。
#resource.py
from .models import(
Country, GeoMaster
)
from import_export import resources, fields
from import_export.widgets import ForeignKeyWidget
class CountryResource(resources.ModelResource):
geo_master_id= fields.Field(
column_name= 'geo_master_id',
attribute='geo_master_id',
widget=ForeignKeyWidget(GeoMaster, 'id')
)
class Meta:
model = Country
import_id_fields = ['country_name']
fields = ( 'id', 'country_name', 'geo_master_id')
我的模型GeoMaster 包含多个条目,ID 范围为 1-10
我成功导入数据集(geo_master_id=1 是数据库中的第一个条目):
id|country_name|geo_master_id
--|--------------|--------------|
|India |1.0 |
导入数据集不成功(geo_master_id=2 不是数据库中的第一个条目):
id|country_name|geo_master_id
--|--------------|--------------|
|India |2.0 |
错误:GeoMaster 匹配查询不存在。 我的#resources.py 有什么问题吗?
更新: 我添加了自定义小部件:
class GeoMasterForeignKeyWidget(ForeignKeyWidget):
def get_queryset(self, value, row):
return self.model.objects.filter(
id=row["geo_master_id"],
)
#to be used in subsequent field
geo_master_id= fields.Field(
column_name= 'geo_master_id',
attribute='geo_master_id',
widget=GeoMasterForeignKeyWidget(GeoMaster, 'id')
)```
Still it returns Error: GeoMaster matching query does not exist.
【问题讨论】: