Django AdminForm の ForeignKey Selectbox に関連するプロジェクトだけを表示するために、ActionAdminForm クラスを使用して ActionAdmin モデルをカスタマイズしました。値を事前に選択するには、ここに投稿されたようなクラスを使用しましたhttps://stackoverflow.com/a/9191583/326905。どうもありがとう、これは本当にうまくいきます。
しかし、ユーザーが Customer -> Project -> Action から移動せず、django admin の Actions に直接移動する場合、次のようにフォーマットされた ActionAdmin Form のforeignkey プロジェクトの選択ボックスに値を表示したい:
Customername1 - Projectname1
Customername1 - Projectname2
Customername2 - Projectname3
私の質問は、以下のコードのelseケースでself.fields [ "project"]をオーバーライドして、 Project.customer.nameとProject.name
から連結されたselectbox値を取得するにはどうすればよいですか?
class ActionAdminForm(ModelForm):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(ActionAdminForm, self).__init__(*args, **kwargs)
if self.request.GET.get('project'):
prj = Project.objects.get(id=self.request.GET.get('project'))
self.fields["project"].queryset = Project.objects.filter(customer = prj.customer)
else:
self.fields["project"] = ProjectModelChoiceField(Project.objects.all().order_by('name'))
class Meta:
model = Action