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

标签 python django foreign-keys relationships django-import-export

我正在尝试设置 django-import-export 来处理存储在电子表格中的数据。 电子表格不包含作为 ID 的外键,而是包含相关对象的(也是唯一的)名称。 在我的数据库中,我将拥有在位于 CitiesSchools 工作的 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 的文档.

关于python - django-import-export:如何使用没有键但有名称的外键导入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32466748/

相关文章:

django - 提高形式。ValidationError 不工作

mysql - 外键的效率如何?

MySQL 使用外键创建表给出 errno : 150

python - Python 中节点的可视化表示

python - 使用 PuLP 进行线性规划沙拉混合物优化

Python Heroku 应用程序失败并出现 "Address in use"错误

python - 使用 pandas 使用通配符对列名称进行排序

python - HTTP 版本或 header 会影响网页的视觉外观吗?

Django 测试安装固定装置时出错 - 没有这样的表

database-design - 外键是邪恶的?