0

我有这个form.py

class specForm(ModelForm):
    a = Doctors_list.objects.values_list('specialty', flat=True)
    specialty = forms.ModelChoiceField(queryset=a)
    class Meta:
        model = Doctors_list

views.py

from django.shortcuts import render_to_response
from testApp.forms import specForm

def specForm (request):
    if request.method == 'POST':
        form = specForm(request.POST)
        if form.is_valid():
            form.save()
    else:
        form = specForm()
    return render_to_response('hello.html', {'form':form})

当我运行它时,我得到以下错误:specForm() takes exactly 1 argument (0 given) ,我想这是因为它认为form无效,为什么?我该如何解决?

我的模型.py:

class Doctors_list(models.Model):

    name = models.CharField(max_length=30)
    specialty = models.CharField(max_length=15)
    hp_id = models.ManyToManyField(Health_plan)
    location = models.CharField(max_length=15)

    def __unicode__(self):
        return self.name

任何帮助表示赞赏

4

2 回答 2

2

def specForm(request)这是方法和实际对象形式之间的名称冲突class specForm。尝试重命名其中之一。我的建议是重命名该方法,因为它可能只能从内部调用urls.py

希望能帮助到你

于 2013-05-02T15:24:55.110 回答
2

不要给你的表单类和你的视图同名。

按照惯例,你的表单应该被命名SpecForm,你的视图spec_form(或者更好,类似的东西update_specialty)和你的模型Doctor

于 2013-05-02T15:24:58.337 回答