如何通过选择从导入导出(管理集成)Django 导入?
How to Import from Import-Export(Admin integration) Django with choices?
我有一个模型:
class Student(models.Model):
TITLE = (
('Title_Mr', ('Mr')),
('Title_Ms', ('Ms')),
)
Name = models.CharField(max_length = 25, default = '')
Title = models.CharField(max_length = 32, choices = TITLE, blank=True, null = True)
...
通过选择和导入-导出功能,我想导入职位值为“Mr”或“Ms”的学生。
我试过的是这个答案
但显然这是为了出口?
如果我想导入它该怎么办。这是我的 resources.py
from import_export import resources, fields
从 main.models 导入 Schulungsteilnehmer
class StudentsResource(resources.ModelResource):
Title = fields.Field(attribute='get_Title_display', column_name=('Title'))
class Meta:
model = Student
exclude=('id',)
import_id_fields = ('StudentID',)
我可以毫无问题地导入,但是选择字段是空的,例如,当我在管理面板中单击一个学生进行编辑时。
如何将值保存为选项选择值?
The first element in each tuple is the actual value to be set on the model, and the second element is the human-readable name.
因此,在您的情况下,'Title_Mr' 或 'Title_Ms' 将是存储在数据库中的值。
这意味着如果您在 Resource
中如下定义 Title
字段,您将能够成功导入:
title = fields.Field(attribute='title', column_name='Title')
(我根据 style guidelines 将字段名称设为小写)
attribute
是要设置的模型 class 上的属性。
column_name
是导入文件中的header名称。
这仅在导入文件中的数据与 choices
声明匹配时才有效(例如 'Title_Mr')
但是,您说源数据是 'Mr' 或 'Ms'。要解决这个问题,最简单的方法是使 'Mr' 和 'Ms' 成为 choices
声明的值:
TITLE = (
('Mr', ('Mr')),
('Ms', ('Ms')),
)
但如果这不可能,那么您将不得不创建一个 custom widget,它可以解析源数据(例如 'Mr')并将其转换为正确的值(例如 'Title_Mr').
有关创建自定义小部件的帮助,source 中有示例。
我有一个模型:
class Student(models.Model):
TITLE = (
('Title_Mr', ('Mr')),
('Title_Ms', ('Ms')),
)
Name = models.CharField(max_length = 25, default = '')
Title = models.CharField(max_length = 32, choices = TITLE, blank=True, null = True)
...
通过选择和导入-导出功能,我想导入职位值为“Mr”或“Ms”的学生。
我试过的是这个答案
但显然这是为了出口? 如果我想导入它该怎么办。这是我的 resources.py
from import_export import resources, fields
从 main.models 导入 Schulungsteilnehmer
class StudentsResource(resources.ModelResource):
Title = fields.Field(attribute='get_Title_display', column_name=('Title'))
class Meta:
model = Student
exclude=('id',)
import_id_fields = ('StudentID',)
我可以毫无问题地导入,但是选择字段是空的,例如,当我在管理面板中单击一个学生进行编辑时。 如何将值保存为选项选择值?
The first element in each tuple is the actual value to be set on the model, and the second element is the human-readable name.
因此,在您的情况下,'Title_Mr' 或 'Title_Ms' 将是存储在数据库中的值。
这意味着如果您在 Resource
中如下定义 Title
字段,您将能够成功导入:
title = fields.Field(attribute='title', column_name='Title')
(我根据 style guidelines 将字段名称设为小写)
attribute
是要设置的模型 class 上的属性。column_name
是导入文件中的header名称。这仅在导入文件中的数据与
choices
声明匹配时才有效(例如 'Title_Mr')
但是,您说源数据是 'Mr' 或 'Ms'。要解决这个问题,最简单的方法是使 'Mr' 和 'Ms' 成为 choices
声明的值:
TITLE = (
('Mr', ('Mr')),
('Ms', ('Ms')),
)
但如果这不可能,那么您将不得不创建一个 custom widget,它可以解析源数据(例如 'Mr')并将其转换为正确的值(例如 'Title_Mr').
有关创建自定义小部件的帮助,source 中有示例。