使用django-import-export导入具有关系的数据

时间:2019-07-19 08:01:23

标签: django django-import-export

我有3个模型,我想使用django-import-export将数据导入其中,但是我不知道如何建立关系。

我有两个csv文件,一个包含Assets,另一个包含Option。

CSV-资产

name,unique_id
car,carXYC,
car2,carABC,

CSV-选项

name,unique_id
stereo,carXYC,
tires,carXYC,
leather,carXYC,
4wdtires,carABC,
pleather,carABC,

models.py

class Option(models.Model):
    name = models.CharField(
        max_length=255,
    )

class Asset(models.Model):
    name = models.CharField(
        max_length=255,
    )
    unique_id = models.CharField(
        max_length=255,
        unique=True,
    )
    option = models.ManyToManyField(
        Option,
        through=AssetOptionsThrough,
    )

class AssetOptionsThrough(models.Model):
    asset = models.ForeignKey(
        "Asset",
        on_delete=models.CASCADE,
    )
    option = models.ForeignKey(
        "Option",
        on_delete=models.CASCADE,
    )

resources.py

class AssetResource(resources.ModelResource):

    class Meta:
        model = Asset
        fields = ('name', 'unique_id',) 

class OptionResource(resources.ModelResource):
    unique_id = fields.Field(column_name='unique_id')

    class Meta:
        model = Option
        fields = ('name', 'unique_id',) 

unique_id仅包含在OptionResource类中,因此我们可以将其与正确的资产匹配,而实际上并没有将其存储在Option模型中。

从这里我想:

  1. 导入资产CSV(通过Django Admin手动执行操作)

  2. 导入选项CSV(通过Django Admin进行手动操作),适用于每一行:

    a)创建选项记录

    b)使用unique_id查找正确的资产

    c)创建一个通过模型将它们链接到AssetOptions中的记录(使用(a)和(b)的结果

我在https://django-import-export.readthedocs.io/en/latest/api_resources.html处查看了API,但无法弄清楚该如何做。

我需要数据集(包含unique_id的行数据)和在步骤2a中创建的选项记录。我看不到API中提供这两种方法的方法吗?

0 个答案:

没有答案