小部件¶
- 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假定
True、False和None都是有效值,以匹配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表示为1,False表示为0,None/NULL 表示为空字符串。如果coerce_to_string为False,则返回 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。