class AccountResource(resources.ModelResource):
class Meta:
model = Account
skip_unchanged = True
report_skipped = False
import_id_fields = ('ID',)
fields = ('ID', 'Rank_Test', 'UName', 'DecimalTest')大家好,上面的代码就是我使用的django-import-export的模型资源。我想要完成的是,在导入时,'DecimalTest‘字段使用django- import -export decimal小部件;这是因为excel将所有int都输出为浮点型。我只是不确定如何在此上下文中将小部件应用于DecimalTest字段。任何帮助都将不胜感激。
发布于 2019-01-14 16:30:34
在使用import_export的DecimalWidget时,比较0.111和0.1110之间的浮点值时存在一些问题。所以我重新定义了一个自定义的DecimalWidget。
from django.db.backends import utils
from import_export import widgets
class CustomDecimalWidget(widgets.DecimalWidget):+
DECIMAL_MAX_DIGITS = 8
DECIMAL_MAX_PLACES = 2
def clean(self, value, row=None, *args, **kwargs):
if self.is_empty(value):
return None
return utils.format_number(value, self.DECIMAL_MAX_DIGITS, self.DECIMAL_MAX_PLACES)然后修改fields.Field类的widget并赋值给DecimalTest。
from import_export import fields
class AccountResource(resources.ModelResource):
DecimalTest = fields.Field(
column_name='DecimalTest', attribute='DecimalTest', widget=CustomDecimalWidget())
class Meta:
model = Account
skip_unchanged = True
report_skipped = False
import_id_fields = ('ID',)
fields = ('ID', 'Rank_Test', 'UName', 'DecimalTest')https://stackoverflow.com/questions/49850962
复制相似问题