爲了在Django AdminForm的ForeignKey選擇框中僅顯示相關項目,我使用ActionAdminForm類自定義了我的ActionAdmin模型。預先選擇我使用類似的貼圖https://stackoverflow.com/a/9191583/326905。非常感謝,這工作真的很好。通過覆蓋ModelForm和ModelChoiceField連接兩個模型的值
但是當用戶沒有瀏覽表客戶 - >項目 - >動作,並直接導航到Django管理操作,我想在此格式中ActionAdmin表格的選擇框的外鍵項目中顯示的值:
Customername1 - Projectname1
Customername1 - Projectname2
Customername2 - Projectname3
我的問題是,我怎麼能覆蓋self.fields [ 「項目」]
在別的CAS e在下面的代碼中,
,以便我從
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
我自己解決了。重寫ModelChoiceField是線索。 – surfi
做得好,+1爲了解決你自己。我完全忘記了'ModelChoiceField.label_from_instance'。 –
謝謝。越來越多的python,django向我做出努力。 – surfi