Джанго Аякс полевая помощь - PullRequest
1 голос
/ 08 декабря 2010

У меня есть приложение Django, где я пытаюсь создать форму, которая динамически заполняет раскрывающийся список на основе предыдущего раскрывающегося списка.

упрощенные модели:

class VehicleMake(models.Model):
    make = models.CharField(max_length = 30)


class VehicleModel(models.Model):
    model = models.CharField(max_length = 80)
    make = models.ForeignKey(VehicleMake)

class Listing(models.Model):
    make = models.ForeignKey(VehicleMake)
    model = models.ForeignKey(VehicleModel)

Форма:

class DynamicChoiceField(ModelChoiceField):
    def clean(self, value):
        return value

class MyForm(ModelForm):
    category = ModelChoiceField(VehicleCategory.objects, widget=forms.Select(attrs={'onchange':'FilterMakes();'}))
    make = DynamicChoiceField(VehicleMake.objects,widget=forms.Select(attrs={'disabled':'true','onchange':'FilterModels();'}), empty_label="Select Model")
    model = DynamicChoiceField(VehicleModel.objects,widget=forms.Select(attrs={'disabled':'true'}), empty_label="Select Make")


    class Meta:
        model = Listing

Вид:

def new_listing(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            form.save()

    else:
        form = MyForm()



    return render_to_response("newlisting.html", {
        "form": form,'model_id':model_id,'make_id':make_id
    })

У меня также есть определенный ajax для автозаполнения, но это не проблема

Когда я отправляю форму, я получаю следующее:

Cannot assign "u'2'": "Listing.make" must be a "VehicleMake" instance.

если я попытаюсь

make=VehicleMake.objects.get(pk=request.POST['make'])
form.fields['make'] = make

тогда я получу

'VehicleMake' object has no attribute 'widget'

1 Ответ

0 голосов
/ 09 декабря 2010

После предложения одного из комментаторов, что класс DynamicChoiceField был виновником, я удалил его и установил объекты формы для ModelChoiceFields с точно такими же другими параметрами.Объект, по-видимому, также проходит и проверяется правильно.Дополнительный класс существовал на основе старого учебника, который я нашел.похоже, что то, что автор сделал там, работает с формами. ChoiceField, но не обязательно для использования ModelChoiceField

, спасибо всем за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...