Django导入基于值非模型字段添加多对多关系

Django import adding Many-to-Many relationship based on value non-model field

我正在使用 django-import-export 导入 xls。

在 xls 中是一个布尔字段 is_senior,它不是模型字段。

在模型中,我与一个模型 Level 有一个多对多的关系,它有初级、高级等

如果is_senior is True我想:

senior = Level.objects.filter(name__icontains = 'senior').first()
instance.level.add(senior)

但问题是: before_import_row 了解非模型字段,但无法添加 m2m 关系 after_save_instance 没有非模型字段

有什么想法吗?

您可以在资源实例上设置临时属性:

    def before_import_row(self, row, row_number=None, **kwargs):
        self.is_senior = row.get("is_senior")


    def after_save_instance(self, instance, using_transactions, dry_run):
        print(self.is_senior)

只要行没有因任何原因被跳过(skip_row() 已定义或出现错误),这将起作用。彻底测试以确保 is_senior 设置正确。