Skip to main content
 首页 » 编程设计

python之django-import-export:如何使用没有键但有名称的外键导入数据

2024年10月24日37wayfarer

我正在尝试设置 django-import-export 来处理存储在电子表格中的数据。 电子表格不包含作为 ID 的外键,而是包含相关对象的(也是唯一的)名称。 在我的数据库中,我将拥有在位于 Cities 的 Schools 工作的 Teachers 的外键关系。

想象这是模型(摘录):

class School(models.Model): 
    city = models.ForeignKey(City) 
    name = models.CharField(max_length=200) 
 
 
class Teacher(models.Model): 
    school = models.ForeignKey(School) 
    name = models.CharField(max_length=200) 

教师的电子表格可能如下所示:

school,name 
Central Grammar School,John Smith 
West Primary,Jane Doe 
West Primary,John Doe 
...,... 

如何构建 SchoolResource 模型以便在导入过程中接受名称而不是 ID?

(我不能只从数据库中获取 ID,因为我的想法是,在某一时刻,只使用不包含任何 ID 的电子表格数据从头开始创建数据库。)

请您参考如下方法:

ForeignKeyWidget 接受可选的 field 参数,因此它在 SchoolResource 中看起来像这样:

school = fields.Field(column_name='school', 
                      attribute='school',  
                      widget=ForeignKeyWidget(School, 'name')) 

请参阅 ForeignKeyWidget 的文档.