剛剛嘗試了 django-import-export 從 csv 檔案中匯入一些東西。遵循檔案,但在嘗試匯入以下模型時總是出現錯誤:
class Token(models.Model):
key = models.CharField(db_index=True,unique=True,primary_key=True, )
pool = models.ForeignKey(Pool, on_delete=models.CASCADE)
state = models.PositiveSmallIntegerField(default=State.VALID, choices=State.choices)
然后是資源類:
class TokenResource(resources.ModelResource):
class Meta:
model = Token
skip_unchanged = True
report_skipped = True
fields = "key"
現在匯入 csv 檔案時出現以下錯誤:
Error
row number: 1 - 'id'
Traceback (most recent call last):
File "/backend/.venv/lib/python3.9/site-packages/import_export/resources.py", line 667, in import_row
instance, new = self.get_or_init_instance(instance_loader, row)
File "/backend/.venv/lib/python3.9/site-packages/import_export/resources.py", line 359, in get_or_init_instance
instance = self.get_instance(instance_loader, row)
File "/backend/.venv/lib/python3.9/site-packages/import_export/resources.py", line 346, in get_instance
import_id_fields = [
File "/backend/.venv/lib/python3.9/site-packages/import_export/resources.py", line 347, in <listcomp>
self.fields[f] for f in self.get_import_id_fields()
KeyError: 'id'
我的模型中沒有欄位 id 主鍵欄位是關鍵,為什么不采用它?
或者模型必須有一個 id 欄位才能匯入?我知道這個 id 被用來進行比較等等,但是模型中有一個主鍵欄位,所以我不明白為什么不這樣做。
如何在不必重命名模型的情況下更改此設定?我在檔案中找不到提示。
謝謝
uj5u.com熱心網友回復:
我的模型中沒有欄位 id 主鍵欄位是關鍵,為什么不采用它?
用于識別物件是否存在的默認欄位稱為“id”。但是,您可以覆寫 using import_id_fields,因此在您的情況下,以下內容應該有效:
class TokenResource(resources.ModelResource):
class Meta:
model = Token
skip_unchanged = True
report_skipped = True
import_id_fields = ("key",)
# you can optionally use 'fields' as a whitelist for
# fields to be imported
fields = ("key",)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/389614.html
上一篇:我運行命令django-adminstartprojectdr它顯示zsh:commandnotfound:django-admin?
