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')