'PersonForm'对象没有属性'as_widget'

时间:2019-09-13 22:43:00

标签: django django-models django-forms django-templates django-views

我正在尝试将字符串传递给其数据存储在数据库中的表单的隐藏字段scenario。目标是能够在客户端上检索其他信息,而不必将其作为表单的另一个字段。
我收到'PersonForm' object has no attribute 'as_widget'错误。

这是我的模特:

class Person(models.Model):
    region           = models.CharField(max_length=30)
    industry         = models.CharField(max_length=30)
    uuid             = models.CharField(max_length=50, blank=True, unique=True, default=uuid.uuid4)
    scenario         = models.ForeignKey(Scenario,  on_delete=models.CASCADE,)

    def __str__(self):
        return "{}".format(self.uuid)

我的表单

class PersonForm(forms.ModelForm):
    class Meta:
        model=Person

        scenario   = forms.CharField(widget=forms.HiddenInput())
        fields     = ['industry', 'region','scenario']

我的视图

def personforms(request):
    persons = Person.objects.all()
    if request.method == 'POST':
        filled_form = PersonForm(request.POST)
        if filled_form.is_valid():
            created_person    = filled_form.save()
            #DEBUG
            print(filled_form.cleaned_data['scenario'])

            created_person_pk = created_person.id
            filled_form      = PersonForm()
            return redirect('/scenariopage', {'persons':persons})
        else:
            created_person_pk = None
        return render(request, 'core/scenario-landing-page.html', {'personform':filled_form, 'created_person_pk':created_person_pk})
    else:
        form = PersonForm()
        return render(request, 'core/scenario-landing-page.html', {'personform':form})

还有我的模板

 <form action="{% url 'personform' %}" method="post" class="custom-form">
    {% csrf_token %}
    {% render_field personform class="form-control" %}
    {% render_field personform.scenario class="form-control form-control-sm" value='{{ scenario.name }}' %}
    <input type="submit" class="btn color-btn" value="Go to Scenario page" data-dismiss="gallery-item"/>
</form>

我有问题:

我没有错误消息。但是调试打印表明filled_form.is_valid():似乎无效。 而且“查看”中的这一行永远不会打印结果:

#DEBUG print(filled_form.cleaned_data['scenario'])

  • 我在做什么错了?

  • 如何将数据传递到字段scenario

0 个答案:

没有答案