使用: Python3.10.4
Django 4.06
Django-进出口2.8.0

我正在try 将数据作为演示数据导入到我的Django应用程序中.我一直收到KeyError.

### models.py
class Reservation(models.Model):
    reservation = models.OneToOneField(Vehicle, on_delete=models.CASCADE, primary_key=True,)
    delivered = models.BooleanField('Delivered',default=False)
    date_reserved = models.DateTimeField('date reserved', default=datetime.datetime.now)
    ...

### admin.py
class ReservationResource(resources.ModelResource):
    class Meta:
        model = Reservation
        exclude = ('id',)
        import_id_fields = ('reservation',)
        fields = (
            'reservation',
            'delivered',
            'date_reserved',
            ...
        )
class ReservationImportExport(ImportExportModelAdmin):
    resource_class: ReservationResource
@admin.register(Reservation)
class ReservationAdmin(SimpleHistoryAdmin, ReservationImportExport):
    fields = ["delivered","date_reserved",...]

### demo-reservations.yaml  (Note: Problem happens using different data file formats)
 - reservation: 50001
   delivered: False
   date_reserved: 7/15/2022T00:00:00+00:00
   ...

以下是错误(略显模糊)

Traceback (most recent call last):
File "c:\Users\...\lib\site-packages\import_export\resources.py", line 661, in import_row
instance, new = self.get_or_init_instance(instance_loader, row)
File "c:\Users\...\lib\site-packages\import_export\resources.py", line 353, in get_or_init_instance
instance = self.get_instance(instance_loader, row)
File "c:\Users\...\lib\site-packages\import_export\resources.py", line 340, in get_instance
import_id_fields = [
File "c:\Users\...\lib\site-packages\import_export\resources.py", line 341, in <listcomp>
self.fields[f] for f in self.get_import_id_fields()
KeyError: 'id'

已try :

  1. 已从管理员注册中删除SimpleHistoryAdmin
  2. 将断点放入调试器--很明显,调试器忽略了"import_id_field"值.如果我在它调用GET_IMPORT_ID_FIELS(Self)时手动将该值更改为‘Reserve’,我会得到进一步的结果(我将单独询问第二个问题--猜测stackoverflow希望每个问题有1个问题.有人可以随时告诉我将它们集中在一起是否更好.)我确实在调试器中看到‘id’是到达该调用时self._meta.import_id_field的值.
  3. 将模型从OnetoOne更改为ForeignKey

我设法找到的每个其他答案似乎都表明,添加排除id和import_id_field应该已经解决了这个问题.我认为我已经try 了not次(really次不想try )的唯一方法是更改id/外键列名称.

编辑1: 在这一点上,我几乎可以肯定这是Django-IMPORT-EXPORT包中的错误.如果模型中有名为"id"的字段,则管理导入失败.我有点头晕目眩,无法完全排除故障. 我在GitHub上输入了一个错误.https://github.com/django-import-export/django-import-export/issues/1480

推荐答案

以防发现这个,我只是想结束这个循环.我的代码中有一个错误.

class ReservationImportExport(ImportExportModelAdmin):
    resource_class: ReservationResource

应该是:

class ReservationImportExport(ImportExportModelAdmin):
    resource_class = ReservationResource

=而不是:起到了很大的作用.

Python相关问答推荐

python中csv. Dictreader. fieldname的类型是什么?'

Numpyro AR(1)均值切换模型抽样不一致性

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

ModuleNotFoundError:没有模块名为x时try 运行我的代码''

如何强制向量中的特定元素在Gekko中处于优化解决方案中

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

计算机找不到已安装的库'

浏览超过10k页获取数据,解析:欧洲搜索服务:从欧盟站点收集机会的微小刮刀&

在Pandas 中以十六进制显示/打印列?

为什么在不先将包作为模块导入的情况下相对导入不起作用

如何在不遇到IndexError的情况下将基数10的整数转换为基数80?

将鼠标悬停在海运`pairplot`的批注/高亮显示上

如何从具有完整层次数据的Pandas框架生成图形?

为什么fizzbuzz在两个数字的条件出现在一个数字的条件之后时不起作用?

如何使用Tkinter的CheckButtom隐藏或显示由滑块控制的画布线?

无法从文章复制Forking 图

同一单元格中有两个条目的NumPy矩阵不起作用

自由空间里的激光...以及我如何才能检测到Line以进行进一步计算?

NetCDF:使用MSWEP再分析数据集计算沿所有坐标的年降水量总和

无法调用Python文档对象