Django-import-export | проблема при импорте данных в базу данных | ValueError: Поле 'id' ожидало число, но получило ''

Я использую Django-import-export для импорта данных, но столкнулся с ошибкой, приведенной ниже.

Настройки кода Я пытался импортировать данные в базу данных postgresql с помощью django-import-export

class MemberResource(resources.ModelResource):
    Brand=Field()
    class Meta:
        model = model
        fields=('id','title','Model_code','Chipset','chipset_description','image','Brand','Cat')
        export_order=('id','title','Model_code','Chipset','chipset_description','image','Brand','Cat')
    def dehydrate_Brand(self, obj):
        return str(obj.Brand.title)


class modelAdmin(ImportExportModelAdmin):
    resource_class = MemberResource
    list_display=['id','title','Model_code','Chipset','chipset_description','Brand','categories']
    search_fields = ['title','Model_code','Chipset',]
    fields=('title','Model_code','Chipset','chipset_description','image','Brand','Cat')
admin.site.register(model,modelAdmin)

и получил следующую ошибку также прикрепил изображение, где я экспортировал данные из приложения, а затем отредактировал их и попытался импортировать и застрял с следующей ошибкой.

Это означает, что в столбце "id" отсутствуют значения.

Я не знаю "Django import / export", звучит очень хорошо. Мой старый способ с любым импортом/экспортом - экспортировать некоторые выборочные данные, а затем открыть их в excel или pandas. Из-за следующего:

  • У вас есть все необходимые столбцы.
  • Столбцы расположены в правильном порядке.
  • И если у вас есть тестовые данные, вы можете увидеть типы данных каждого столбца.

Осторожнее с использованием Excel, поскольку он меняет True на TRUE и генерирует странные форматы дат. Другая проблема заключается в том, что после импорта django вы должны знать последний номер "id", чтобы дать правильный AutoIncrement для новой записи. Обычно это исправляется с помощью SQL, но возможно "Django-import-export" исправляет это автоматически.

проблема была в том, что обезвоживание внешнего ключа дает только данные только для чтения, которые были предназначены только для экспорта, для импорта нам нужно использовать виджеты, которые разрешат внешние ключи и импортируют данные в базу данных.

Ссылка на Документацию

class MemberResource(resources.ModelResource):
    Brand = fields.Field(
        column_name='Brand',
        attribute='Brand',
        widget=ForeignKeyWidget(brand, 'title'))
    class Meta:
        model = model
        fields=('id','title','Model_code','Chipset','chipset_description','image','Brand','Cat')
Вернуться на верх