Django表单不在视图或shell中呈现

时间:2016-05-12 03:14:36

标签: python django forms

关于SO的问题几乎有很多问题,但似乎每个人都有一个不同的问题。考虑到这一点,我已经梳理了过去几年的问题而没有找到解决我自己独特问题的运气。我想我只需要一双比我更有经验的眼睛。

我正在尝试在个人资料信息编辑页面上呈现表单。该表单应该从两个模型中提取,主要的auth.User和通过OneToOne连接的配置文件模型。问题是该表单不仅不会在HTML中呈现,而且在manage.py shell提示中也没有显示生命迹象。首先,我将向您展示表单本身,然后我将显示提示的输出。除非被要求为了简单起见,并且因为我暂时将它们排除在外,否则我不会表达我的观点。

forms.py:

from django import forms
from django.contrib.auth.models import User
from .models import People, Pick # this is actually for a later forms, which don't work either

class ProfileForm(forms.Form):
    class Meta:
        model = User
        fields = ['people__usr_img', 'email', 'password', 'people__middle_name', 'people__gender', 'people__preference',]

我的shell输出:

$ > python manage.py shell
...Python meta stuff...

>>> from apps.catch.forms import ProfileForm
>>> ProfileForm()
<ProfileForm bound=False, valid=Unknown, fields=()>
>>> form = ProfileForm()
>>> form.as_p()
''
>>> for field in form:
...     print("Field")
... 
>>> 

在我看来,这个问题的核心是fields=()声明。我在Meta中明确定义了字段,为什么我在这里什么都没有?应该提到的是,我的其他形式也存在同样的问题。

1 个答案:

答案 0 :(得分:2)

鉴于您正在设计与您的用户模型交互的表单,如果您使用 forms.ModelForm 而不是 forms.Form ,它会对你有用。