【问题标题】:Django: models, views and templatesDjango:模型、视图和模板
【发布时间】:2014-06-05 15:02:08
【问题描述】:

我正在尝试在 Django 中做一件非常简单的事情,但由于我是新手而被卡住了。基本上,在我网站的医生页面上,我试图添加一个字段,用户可以在其中输入该医生的等待时间。为此,我在我的 models.py 中编写了以下模型:

class WaitingTime(models.Model):
    doctor = models.ForeignKey(Doctor)
    user = models.OneToOneField(User, unique=True)
    time = models.IntegerField("Waiting Time", max_length=2)

在此之后我写了以下视图:

def WaitingTime(request):
    if request.method == 'POST': 
        form = WaitingTime(request.POST)
        if form.is_valid():
            doctor = form.cleaned_data['doctor']
            user = form.cleaned_data['user']
            time = form.cleaned_data['time']
            return HttpResponseRedirect('/thanks/') 
    else:
        form = WaitingTime()

这个观点是我最不确定的部分。尽管我已经完成了 2 个教程,但当我不得不编写这个视图时,我感觉自己完全是个菜鸟。

然后,我将这段代码添加到我的模板中:

<h4>Please enter the waiting time that you experienced for this doctor.</h4>
<form action="/WaitingTime/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="hidden" name="doctor" value="{{ doctor.name }}" />
<input type="hidden" name="user" value="{{ user.username }}" />
WaitingTime: <input type="text" name="time"><br>
<input type="submit" value="Submit" />
</form>

所以基本上,我在将数据从前端添加到我的数据库时遇到了麻烦,这是一件非常琐碎和基本的事情。我已经运行了 python manage.py syncdb 并使用 SQLite 数据库浏览器进行了检查。已添加具有适当列的表。请帮忙。非常感谢提前。

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    为了对数据库进行更改,您的视图需要更改为 -

    def WaitingTime(request):
        if request.method == 'POST': 
            form = WaitingTimeForm(request.POST) #class specified in forms.py
            if form.is_valid():
                doctor = form.cleaned_data['doctor']
                user = form.cleaned_data['user']
                time = form.cleaned_data['time']
                WaitingTimeObject = WaitingTime(doctor=doctor, user=user, time=time)
                WaitingTimeObject.save()
                return HttpResponseRedirect('/thanks/') 
    

    【讨论】:

    • 感谢您的回答。我做出了改变。但是,当我尝试提交表单数据时,我收到一条错误消息,提示“AttributeError at /WaitingTime/ 'WaitingTime' 对象没有属性 'get'”
    • 那是因为你的model和form名字是一样的。我会将表单类更改为WaitingTimeForm() 另外,视图名称相同 - 再次冲突!
    • 我认为@karthir 可能已经解决了您的疑问。您是否创建了 forms.py 文件?在 forms.py 中,确保类是 WaitingTimeForm(检查我对答案所做的编辑)。
    猜你喜欢
    • 2018-04-05
    • 2016-04-27
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 2015-03-24
    • 2023-03-07
    相关资源
    最近更新 更多