私はDjango import_exportを使用して、管理ページにCSVアップロードを実装しています。今私は外部キー列を含む1つのモデルを持っていますが、外部キー列はインポートごとに1つの値しか持たないでしょう。したがって、ユーザーが列を追加するのではなく、ドロップダウンから関連するモデルインスタンスを選択できるようにしたいと考えています。これを行うには、デフォルトのメソッド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'
を取得し、ローカルVARSに私はrequest object
は実際に私がものではないと信じているMyModelAdmin
クラス、であることがわかります。ここで私はこれまでにしたものですなるはずです。