为了账号安全,请及时绑定邮箱和手机立即绑定

不将 **kwargs 从自定义视图/表单传递到 django-import-export 资源

不将 **kwargs 从自定义视图/表单传递到 django-import-export 资源

长风秋雁 2023-05-09 10:10:31
当我在 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)



查看完整回答
反对 回复 2023-05-09
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信