【发布时间】:2021-10-03 20:55:49
【问题描述】:
我有这两个模型:
Profile_model.py
class Profile(models.Model):
firstname = models.CharField(max_length=200, blank=False)
lastname = models.CharField(max_length=200, blank=False)
email = models.CharField(max_length=200, unique=True, blank=False)
...
Investment_model.py
class Investment(models.Model):
invested = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True)
profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
...
我有这个管理员:
Investment_admin.py
class InvestmentResource(resources.ModelResource):
...
firstname = fields.Field(attribute='profile',
widget=ForeignKeyWidget(Profile, field='firstname'),
column_name='firstname')
lastname = fields.Field(attribute='profile',
widget=ForeignKeyWidget(Profile, field='lastname'),
column_name='lastname')
email = fields.Field(attribute='email',
widget=ForeignKeyWidget(Profile, field='email'),
column_name='email')
class Meta:
model = Investment
fields = (
'firstname',
'lastname',
'email',
'invested',)
export_order = fields
class InvestmentAdmin(ImportExportModelAdmin, admin.ModelAdmin):
...
resource_class = InvestmentResource
...
我正在使用django 的ImportExportModelAdmin 进行批量导入和导出,但是当我尝试导入时,出现此错误:
我知道它产生此错误是因为尚未创建配置文件。但是我需要做什么才能在ImportExportModelAdmin 中实现update_or_create?
【问题讨论】:
-
我以前从未使用过这个,但也许你可以试试这个。创建备份模型并将要导入的数据导入这些模型,但在这些模型中,将配置文件连接到
Investment模型时,请提供on_delete=models.SET_NULL和null=True, blank=True属性。然后就可以填写Investment模型的profile字段,通过Shell传递给主模型。
标签: django django-import-export