Добавить первичный ключ при загрузке исходного файла в django-import-export

Я использую django-import-export импортировать данные из листов CSV / Excel в мои модели.

Это мой код:

models.py

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

    def __str__(self):
        return self.name

admin.py

class ClientResource(resources.ModelResource):
class Meta:
    model = Client


@admin.register(Client)
class ClientAdmin(ImportExportModelAdmin):
    resource_class = ClientResource

Однако при загрузке я получаю сообщение об ошибке:

File "\venv\lib\site-packages\import_export\instance_loaders.py", line 31, in get_instance
field = self.resource.fields[key]
KeyError: 'id'

Насколько я понимаю, это потому, что мой лист Excel не несет id поле, которое является полем первичного ключа. Есть ли способ, которым я могу заставить ресурс создавать идентификатор при загрузке каждого экземпляра Client?

1 ответ

Создать пустой столбец в файле. Пример:

file.csv

файл CSV

и ваш код:

models.py

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

      def __str__(self):
          return self.name

а также

admin.py

  class ClientResource(resources.ModelResource):
    class Meta:
        model = Client
        fields = ('id','name')


  @admin.register(Client)
  class ClientAdmin(ImportExportModelAdmin):
      resource_class = ClientResource

это создает новый идентификатор при загрузке данных из файла.

Другие вопросы по тегам