определить набор запросов ModelMultipleChoiceField в виджете - PullRequest
1 голос
/ 27 февраля 2010

Я использую 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 Ответ

3 голосов
/ 27 февраля 2010

Я не уверен, что это то, что вы ищете, но если вам нужен тот же "список-шаттл", что и в auth / user / permissions, попробуйте это;

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   
...