Django динамическая форма ValidationErorr - PullRequest
2 голосов
/ 31 августа 2010

Я пытаюсь изменить admin ModelMultipleChoiceField, чтобы он загружал данные динамически.

Поскольку я хочу загружать данные динамически, набор запросов для ModelMultipleChoiceField пуст при создании экземпляра формы, поэтому при выполнении проверки формы django жалуется, что варианты недопустимы, поскольку их нельзя найти в наборе запросов ,

Есть ли способ обойти это?

FORM:
class FormName(forms.ModelForm):
    dinamic_field = forms.ModelMultipleChoiceField(Entry.objects.none(),widget=
            widgets.FilteredSelectMultiple("", False))

    class Meta:
        model = ModelName
        fields = ('dinamic_field',)

    class Media:
        js = ('jquery.js', 'dinamic_field.js')

ВИД:

def add(request):
    if request.method == 'POST':
        form = FormName(request.POST)
        if request.is_ajax():
             obj = Packages.objects.get(id = form.data['package'])
            form.fields['dinamic_field'].queryset = Entry.objects.filter(test__in =obj.all())
            return HttpResponse(form['dinamic_field'])
        if form.is_valid():
            job = form.save()
            return HttpResponseRedirect('../../')
    else:
        form = FormName()

    return return render_to_response('/template_name', {'form': 'form'})

1 Ответ

0 голосов
/ 31 августа 2010

Вы пытались переопределить метод __init__() формы и установить queryset для поля? Что-то вроде:

class JobForm(forms.ModelForm):
    dynamic_field = forms.ModelMultipleChoiceField(Entry.objects.none(),widget=
            widgets.FilteredSelectMultiple("", False))

    def __init__(self, *args, **kwargs):
        super(JobForm, self).__init__(*args, **kwargs)
        self.dynamic_field.queryset = Entry.objects.<etc>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...