我使用Django import_export在我的管理页面中实现CSV上载。现在我有一个模型,它包含一个外键列,但外键列对于每个导入只有一个值。因此,我希望允许用户从下拉列表中选择相关的模型实例,而不是强制用户自行追加列。为了做到这一点,我需要自定义导入表单,这需要覆盖默认方法import_action
和process_import
,但是迄今为止我的努力没有发挥作用。以下是我迄今为止:为django import_export扩展管理导入表单
from django import forms
from import_export.forms import ImportForm
from .models import MyModel, RelatedModel
class CustomImportForm(ImportForm):
"""Add a model choice field for a given model to the standard form."""
appended_instance = forms.ModelChoiceField(queryset=None)
def __init__(self, choice_model, import_formats, *args, **kwargs):
super(CustomImportForm, self).__init__(import_formats, *args, **kwargs)
self.fields['appended_instance'].queryset = choice_model.objects.all()
@admin.register(MyModel)
class MyModelAdmin(ImportExportModelAdmin):
resource_class = SomeResource
def import_action(self, request, *args, **kwargs):
super().import_action(self, request, *args, **kwargs)
form = CustomImportForm(RelatedModel,
import_formats,
request.POST or None,
request.FILES or None)
现在,当我去进口页我得到的AttributeError MyModelAdmin has no attribute 'POST'
,并在本地变量我可以看到request object
实际上是MyModelAdmin
类,这是我认为这不是什么它应该是。