【发布时间】:2018-08-01 12:42:48
【问题描述】:
所以在 Django 管理员中,我有一个像这样的对象更改表单:
class SurveyChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return u'{0} - {1}'.format(obj.id, obj.name)
class BlahAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(BlahAdminForm, self).__init__(*args, **kwargs)
surveys = Survey.objects.filter(deleted=False).order_by('-id')
self.fields['survey'] = SurveyChoiceField(queryset=surveys)
class BlahAdmin(admin.ModelAdmin):
form = BlahAdminForm
我想将下拉列表限制为基于 blah 的某种类型的调查。类似的东西
blah_id = self.blah.id
blah_survey_type = Blah.objects.filter(id=blah_id).get('survey_type')
surveys = Survey.objects.filter(deleted=False, type=blah_survey_type).order_by('-id')
但我不确定如何在 BlahAdminForm 类中获得 Blah 的 id。
【问题讨论】:
-
即实例的
id,所以格式为self.instance.id(在super(..)调用之后)。这个id可以是None是构造一个newBlah的情况。 -
@WillemVanOnsem 正是我需要的。写下来作为答案,我很乐意接受。谢谢!
标签: django django-forms django-admin