在我的django admin.py中,我有一个基于选择菜单的自定义小部件。
我希望它在创建模式(添加对象)或更新模式中显示时表现不同(显示不同的项目),因为此字段允许用户从托管播放列表中选择视频。
我可以在modelForm中调用窗口小部件时传递不同的项列表(“choices”参数),但是如何获取此信息:添加或更新模式?
更新:感谢第二个回答
class VideoAdminForm(forms.ModelForm):
class Meta:
model = Video
widgets = {'id_vimeo' : VimeoSelectWidget()}
def __init__(self, *args, **kwargs):
super(VideoAdminForm, self).__init__(*args, **kwargs)
if self.instance.pk is None:
self.fields['id_vimeo'] = forms.ChoiceField(choices=VimeoList())
else:
self.fields['id_vimeo'] = forms.ChoiceField(choices = Video.objects.all().values_list('id_vimeo','titre'))
答案 0 :(得分:2)
查看与表单关联的模型实例。如果它有pk
,则它存在且正在更改,如果pk
为None
,则表示正在创建