Django import_exportを使用して、管理ページに CSV アップロードを実装しています。これで、外部キー列を含む 1 つのモデルができましたが、外部キー列にはインポートごとに 1 つの値しかありません。したがって、ユーザーが列自体を強制的に追加するのではなく、関連するモデル インスタンスをドロップダウンから選択できるようにしたいと考えています。これを行うには、インポート フォームをカスタマイズする必要があります。これには、既定のメソッドimport_action
とをオーバーライドする必要がありますprocess_import
が、これまでの努力は効果を示していません。これが私がこれまでに持っているものです:
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)
インポート ページに移動すると、 が取得され、ローカル varsで実際にクラスであるAttributeError MyModelAdmin has no attribute 'POST'
ことがわかります。request object
MyModelAdmin