在窗口小部件中定义ModelMultipleChoiceField的查询集

时间:2010-02-27 16:10:29

标签: django widget admin

我正在使用带有大量对象的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但无法理解如何访问模块实例。

由于

1 个答案:

答案 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