小部件

class import_export.widgets.Widget(coerce_to_string=True)

一个小部件(Widget)处理导入和导出表示之间的转换。

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)

返回导入值的适当python对象。例如,日期字符串将被转换为python datetime实例。

参数:
  • value -- 要转换为原生类型的值。

  • row -- 包含行键/值对的字典。

  • **kwargs -- 可选 kwargs。

render(value, obj=None, **kwargs)

返回一个python值的导出表示。

参数:
  • value -- 要渲染的python值。

  • obj -- 从中获取值的模型实例。此参数已弃用,将在未来版本中移除。

返回:

默认情况下,该值将是一个字符串,None 值将返回为空字符串。

class import_export.widgets.NumberWidget(coerce_to_string=True)

用于转换数字字段的小部件。

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

render(value, obj=None, **kwargs)

返回一个python值的导出表示。

参数:
  • value -- 要渲染的python值。

  • obj -- 从中获取值的模型实例。此参数已弃用,将在未来版本中移除。

返回:

默认情况下,该值将是一个字符串,None 值将返回为空字符串。

class import_export.widgets.IntegerWidget(coerce_to_string=True)

用于转换整数字段的小部件。

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)

返回导入值的适当python对象。例如,日期字符串将被转换为python datetime实例。

参数:
  • value -- 要转换为原生类型的值。

  • row -- 包含行键/值对的字典。

  • **kwargs -- 可选 kwargs。

class import_export.widgets.DecimalWidget(coerce_to_string=True)

用于转换十进制字段的小部件。

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)

返回导入值的适当python对象。例如,日期字符串将被转换为python datetime实例。

参数:
  • value -- 要转换为原生类型的值。

  • row -- 包含行键/值对的字典。

  • **kwargs -- 可选 kwargs。

class import_export.widgets.CharWidget(coerce_to_string=True, allow_blank=True)

用于转换文本字段的小部件。

参数:

allow_blank -- 如果为True,则 clean() 会将空值返回为空字符串,否则返回 None

clean(value, row=None, **kwargs)

返回导入值的适当python对象。例如,日期字符串将被转换为python datetime实例。

参数:
  • value -- 要转换为原生类型的值。

  • row -- 包含行键/值对的字典。

  • **kwargs -- 可选 kwargs。

render(value, obj=None, **kwargs)

返回一个python值的导出表示。

参数:
  • value -- 要渲染的python值。

  • obj -- 从中获取值的模型实例。此参数已弃用,将在未来版本中移除。

返回:

默认情况下,该值将是一个字符串,None 值将返回为空字符串。

class import_export.widgets.BooleanWidget(coerce_to_string=True)

用于转换布尔字段的小部件。

该widget假定 TrueFalseNone 都是有效值,以匹配Django的 BooleanField。也就是说,数据库/Django是否实际接受NULL值将取决于您是否在该Django字段上设置了 null=True

虽然BooleanWidget设置为接受“True”和“False”(以及“None”)的常见变体作为输入,但您可能需要将不太常见的值转换为``True``/False/None。可能最简单的方法是重写Resource类的:func:`~import_export.resources.Resource.before_import_row`函数。简短示例:

from import_export import fields, resources, widgets

class BooleanExample(resources.ModelResource):
    warn = fields.Field(widget=widgets.BooleanWidget())

    def before_import_row(self, row, **kwargs):
        if "warn" in row.keys():
            # munge "warn" to "True"
            if row["warn"] in ["warn", "WARN"]:
                row["warn"] = True

        return super().before_import_row(row, **kwargs)
clean(value, row=None, **kwargs)

返回导入值的适当python对象。例如,日期字符串将被转换为python datetime实例。

参数:
  • value -- 要转换为原生类型的值。

  • row -- 包含行键/值对的字典。

  • **kwargs -- 可选 kwargs。

render(value, obj=None, **kwargs)
返回:

True 表示为 1False 表示为 0None/NULL 表示为空字符串。如果 coerce_to_stringFalse,则返回 python Boolean 类型(可能为 None)。

class import_export.widgets.DateWidget(format=None, coerce_to_string=True)

用于将日期字段转换为Python date实例的小部件。

接受可选的 format 参数。如果未设置,则使用 settings.DATE_INPUT_FORMATS"%Y-%m-%d"

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)
返回:

一个 python date 实例。

提高:

ValueError 如果无法使用定义的格式解析该值。

render(value, obj=None, **kwargs)

返回一个python值的导出表示。

参数:
  • value -- 要渲染的python值。

  • obj -- 从中获取值的模型实例。此参数已弃用,将在未来版本中移除。

返回:

默认情况下,该值将是一个字符串,None 值将返回为空字符串。

class import_export.widgets.TimeWidget(format=None, coerce_to_string=True)

用于转换时间字段的小部件。

接受可选的 format 参数。如果未设置,则使用 settings.DATETIME_INPUT_FORMATS"%H:%M:%S"

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)
返回:

一个 python time 实例。

提高:

ValueError 如果无法使用定义的格式解析该值。

render(value, obj=None, **kwargs)

返回一个python值的导出表示。

参数:
  • value -- 要渲染的python值。

  • obj -- 从中获取值的模型实例。此参数已弃用,将在未来版本中移除。

返回:

默认情况下,该值将是一个字符串,None 值将返回为空字符串。

class import_export.widgets.DateTimeWidget(format=None, coerce_to_string=True)

用于将datetime字段转换为Python datetime实例的小部件。

接受可选的 format 参数。如果未设置,则使用 settings.DATETIME_INPUT_FORMATS"%Y-%m-%d %H:%M:%S"

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)
返回:

一个 python datetime 实例。

提高:

ValueError 如果无法使用定义的格式解析该值。

render(value, obj=None, **kwargs)

返回一个python值的导出表示。

参数:
  • value -- 要渲染的python值。

  • obj -- 从中获取值的模型实例。此参数已弃用,将在未来版本中移除。

返回:

默认情况下,该值将是一个字符串,None 值将返回为空字符串。

class import_export.widgets.DurationWidget(coerce_to_string=True)

用于转换时间持续时间字段的小部件。

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)
返回:

一个 python duration 实例。

提高:

ValueError 如果无法解析该值。

render(value, obj=None, **kwargs)

返回一个python值的导出表示。

参数:
  • value -- 要渲染的python值。

  • obj -- 从中获取值的模型实例。此参数已弃用,将在未来版本中移除。

返回:

默认情况下,该值将是一个字符串,None 值将返回为空字符串。

class import_export.widgets.JSONWidget(coerce_to_string=True)

用于JSON对象的Widget(特别适用于PostgreSQL数据库中的jsonb字段。)

参数:

value -- 默认为 JSON 格式。

该widget涵盖两种情况:带有双引号的Proper JSON字符串,否则它会尝试使用单引号然后将其转换为Proper JSON。

参数:

coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)

返回导入值的适当python对象。例如,日期字符串将被转换为python datetime实例。

参数:
  • value -- 要转换为原生类型的值。

  • row -- 包含行键/值对的字典。

  • **kwargs -- 可选 kwargs。

render(value, obj=None, **kwargs)
返回:

value 派生的 JSON 格式字符串。coerce_to_string 对返回值没有影响。

class import_export.widgets.ForeignKeyWidget(model, field='pk', use_natural_foreign_keys=False, key_is_id=False, **kwargs)

用于 ForeignKey 字段的小部件,通过主键(PK)或用户指定的唯一标识字段在导出和导入时查找相关模型。

查找字段默认使用主键(pk)作为查找条件,但可以自定义为使用相关模型上的任何字段。

与在资源中指定相关字段不同,像这样…

class Meta:
    fields = ('author__name',)

…使用 ForeignKeyWidget 的优势在于它不仅可用于导出,还可用于导入具有外键关系的数据。

以下是如何使用 ForeignKeyWidget 通过 Author.name 而非 Author.pk 查找关联对象的示例:

from import_export import fields, resources
from import_export.widgets import ForeignKeyWidget

class BookResource(resources.ModelResource):
    author = fields.Field(
        column_name='author',
        attribute='author',
        widget=ForeignKeyWidget(Author, 'name'))

    class Meta:
        fields = ('author',)
参数:
  • model -- 外键引用的模型(必需)。

  • field -- 相关模型上用于查找特定对象的字段。

  • use_natural_foreign_keys -- 使用自然键函数来识别相关对象,默认为False

  • coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)
返回:

一个从args派生的单一外键实例。如果传递的值为空值,可以返回``None``。

参数:
  • value -- 数据集中的字段值。

  • row -- 数据集当前行。

  • **kwargs -- 可选 kwargs。

提高:

ObjectDoesNotExist 如果没有找到有效的实例。

get_lookup_kwargs(value, row, **kwargs)
返回:

用于标识模型实例的键值对。重写此方法以自定义实例查找。

参数:
  • value -- 数据集中的字段值。

  • row -- 数据集当前行。

  • **kwargs -- 可选 kwargs。

get_queryset(value, row, *args, **kwargs)

返回此Model的所有对象的queryset。

如果要限制从中检索相关对象的对象池,请重写此方法。

参数:
  • value -- 数据集中的字段值。

  • row -- 数据集当前行。

  • *args -- 可选参数。

  • **kwargs -- 可选 kwargs。

例如;如果你想让 ForeignKeyWidget 通过一个人的 姓氏列来查找 Person,你可以像这样对 widget 进行子类化:

class FullNameForeignKeyWidget(ForeignKeyWidget):
    def get_queryset(self, value, row, *args, **kwargs):
        return self.model.objects.filter(
            first_name__iexact=row["first_name"],
            last_name__iexact=row["last_name"]
        )
render(value, obj=None, **kwargs)
返回:

相关值的字符串表示。如果 use_natural_foreign_keys,则返回该值的自然键。coerce_to_string 对返回值无影响。

class import_export.widgets.ManyToManyWidget(model, separator=None, field=None, **kwargs)

将ManyToMany关系的表示形式在列表与实际ManyToMany字段之间进行转换的小部件。

参数:
  • model -- 模型 ManyToMany 字段引用的模型(必需)。

  • separator -- 默认为 ','

  • field -- 相关模型上的一个字段。默认是 pk

  • coerce_to_string -- 如果为 True,render() 将返回值的字符串表示形式,否则返回值本身。

clean(value, row=None, **kwargs)

返回导入值的适当python对象。例如,日期字符串将被转换为python datetime实例。

参数:
  • value -- 要转换为原生类型的值。

  • row -- 包含行键/值对的字典。

  • **kwargs -- 可选 kwargs。

render(value, obj=None, **kwargs)
返回:

一个由``separator``分隔的字符串。``None``值会以空字符串形式返回。``coerce_to_string``对返回值没有影响。