當我在 Django 管理中使用這個 resources.py 時,一切正常。但是,當我在我的自定義視圖頁面上執行此操作時,**kwargs 用戶自動填充出現了一個問題。錯誤一定是在我看來,因為它沒有通過 **kwargs,但我不確定如何解決它。我應該在哪里傳遞這些信息?KeyError at /import/'user'C:\Users\winkl\tj3\venv\lib\site-packages\import_export\resources.py in import_row self.after_import_instance(instance, new, **kwargs) …C:\Users\winkl\tj3\portfolios\resources.py in after_import_instance instance.created_by = kwargs['user'] resources.pyclass EntryResource(resources.ModelResource): symbol = fields.Field( attribute="symbol", column_name="symbol", widget=SymbolWidget(Symbol, 'name'), ) date = fields.Field( attribute="date", column_name="date", widget=widgets.DateTimeWidget(format="%Y-%m-%d %H:%M:%S"), ) class Meta: model = Entry fields = ('symbol', 'date', 'id', 'amount', 'price', 'fee', 'entry_type', 'reg_fee',) import_order = fields skip_unchanged = False report_skipped = True def after_import_instance(self, instance, new, row_number=None, **kwargs): print(f' Kwargs: {kwargs}') instance.created_by = kwargs['user'] def after_save_instance(self, instance, using_transactions, dry_run): passview.py@login_requireddef import_data(request): if request.method == 'POST': trade_resource = EntryResource() dataset = Dataset() new_trades = request.FILES['importData'] imported_data = dataset.load(new_trades.read().decode('utf-8'),format='csv') result = trade_resource.import_data(dataset, dry_run=True, raise_errors=True) if result.has_errors(): messages.error(request, 'Uh oh! Something went wrong...') else: # Import now trade_resource.import_data(dataset, dry_run=False) messages.success(request, 'Your words were successfully imported') return render(request, 'dashboard/import.html')
1 回答

寶慕林4294392
TA貢獻2021條經驗 獲得超8個贊
顯然,您收到錯誤是因為 kwargs 字典中沒有包含鍵“用戶”的條目。
如果查看源代碼,您會看到 getkwargs
向下傳遞到調用堆棧中after_import_instance()
。
user
在您的情況下, kwargs 字典中從來沒有任何條目。
但是,如果您將此值傳遞給調用import_data()
,則可以檢索和使用它:
?your_user?=?load_user()?#?implement?this?as?required ?result?=?trade_resource.import_data(dataset,?dry_run=True,?raise_errors=True,?user=your_user)
添加回答
舉報
0/150
提交
取消