Ошибка Django import_export при экспорте с использованием внешнего ключа - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь импортировать набор данных, используя import_export. Там в одном столбце в наборе данных, который основан на иностранном ключе (по фактическому значению "item_sku", а не по его "id") из другой модели. Тем не менее, он продолжает давать мне следующую ошибку:

"Line number: 1 - Model_Model01 matching query does not exist. "

Как я могу это исправить? Я имел в виду следующие источники: источник 01 и источник 02 , но проблема все еще сохраняется.

Вот мои коды:

Models.py

from django.db import models

class Model_Model01(models.Model):

    item_sku = models.CharField(max_length = 2, null = False, blank = False)

    def __unicode__(self):
        return self.item_sku

class Model_Model02(models.Model):

    item_sku = models.ForeignKey(Model_Model01, on_delete = models.CASCADE, null = True, blank = False)

    def __unicode__(self):
        return self.item_sku

admin.py

from import_export import fields
from import_export.admin import ImportExportModelAdmin
from import_export.widgets import ForeignKeyWidget
from .models import (Model_Model01, Model_Model02)


class Admin_Model02(ImportExportModelAdmin):

    item_sku = fields.Field(
        column_name = "item_sku",
        attribute = "item_sku",
        widget = ForeignKeyWidget(Model_Model01, "item_sku")
        )

    class Meta:
        model = Model_Model02

admin.site.register(Model_Model02, Admin_Model02)

1 Ответ

0 голосов
/ 06 мая 2018

Вам необходимо сделать ресурсный объект у вашего администратора. Он имеет import_id_field parameter, определяющий первичный ключ.

Вот пример из документации:

from import_export import resources
from import_export.admin import ImportExportModelAdmin
from .models import Book    

class BookResource(resources.ModelResource):

    class Meta:
        model = Book
        import_id_fields = ('isbn',)
        fields = ('isbn', 'name', 'author', 'price',)

class BookAdmin(ImportExportModelAdmin):
    resource_class = BookResource
...