首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-import-export向模型资源添加小部件

django-import-export向模型资源添加小部件
EN

Stack Overflow用户
提问于 2018-04-16 14:38:01
回答 1查看 948关注 0票数 0
代码语言:javascript
复制
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字段。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-01-14 16:30:34

在使用import_export的DecimalWidget时,比较0.111和0.1110之间的浮点值时存在一些问题。所以我重新定义了一个自定义的DecimalWidget。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49850962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档