我正在使用带有大量对象的ModelMultipleChoiceField。 我想只显示所选对象,让用户删除js选项。 要添加选项,用户将打开类似于ManyToManyRawIdWidget的弹出窗口。
我可以将查询集限制为表单的 init 中的选定选项:
def __init__(self, *args, **kwargs):
super(FormName, self).__init__(*args, **kwargs)
self.fields['field_name'].queryset = self.instance.field_name
但这需要在每张表格上进行手动设置。 是否可以扩展ModelMultipleChoiceField以从字段选择中获取查询集? 我认为我需要扩展ModelChoiceIterator但无法理解如何访问模块实例。
由于
答案 0 :(得分:3)
我不确定这是否是您要找的,但是如果您想要与auth / user / permissions相同的“list-shuttle”,那么您应该尝试一下;
class MyForm(forms.ModelForm):
myfield = forms.ModelMultipleChoiceField(
queryset = Category.objects.all(),
widget = admin.widgets.FilteredSelectMultiple(
_('myfield'), False),
required = False,
)
class MyAdmin(admin.ModelAdmin):
form = MyForm