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
设置正确。
我正在使用 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
设置正确。