【问题标题】:save values into database Django将值保存到数据库 Django
【发布时间】:2017-12-01 17:30:21
【问题描述】:

嗨,我对 Django 比较陌生。 I have a timesheet for user to enters the details, when the submit button is chosen, the data in those filled-up fields will be saved into the Database.但我不知道为什么我的不起作用。由于这些值将被保存,然后它将被检索并显示在另一个 html 文件中的表中。

timesheet.html

{% extends 'hrfinance/base.html' %}
{% block title %} Timesheet {% endblock %}
{% block link %}
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'hrfinance/css/timesheet.css' %}"/>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
    /*to ensure that all the textbox and checkbox have been filled before users can submit*/
    function validation() {
        /*ensure start date has been entered*/
        if (!$('#studentid').val().trim()) {
            alert('Please fill in student ID field');
        }
        /*ensure start date has been entered*/
        if (!$('#studentname').val().trim()) {
            alert('Please fill in student name field');
        }
        /*ensure start date has been entered*/
        if (!$('#sdate').val().trim()) {
            alert('Please fill in start date field');
        }
        /*ensure end date has been entered*/
        if (!$('#edate').val().trim()) {
            alert('Please fill in end date field');
        }
        /*ensure checkbox has been ticked*/
        if (!$('#agree').is(':checked')) {
            alert('Please indicate that you have satisfied all the requirements');
        }
        else{
            console.log('ok')
      }
    }
</script>
{% endblock %}

{% block body %}
<div class="sub-bar">
    <p>Submit Timesheet</p>
</div>
<br>
<br>
<br>
<br>
<br>
<br>
<form onsubmit="return validation()">
    <div class="content-wrapper">
        <div class="sub-content">
            <div>
                <p>Student ID: {{timesheet.studentID}}</p>
                <input id="sid" type="field" name="studentid">
            </div>
        </div>

        <div class="sub-content">
            <div>
                <p>Student Name: {{timesheet.studentName}}</p>
                <input id="sname" type="field" name="studentname">
            </div>
        </div>

        <div class="sub-content">
            <div>
                <p>Start Date: {{timesheet.startDate}}</p>
                <input id="sdate" type="date" name="startdate">
            </div>
        </div>

        <div class="sub-content">
            <div>
                <p>End Date: {{timesheet.endDate}}</p>
                <input id="edate" type="date" name="enddate">
            </div>
        </div>
    </div>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <div class="end-content">
        <div class="center-align">
            <div class="checklist">
                <p>By checking this box I agree that I have satisfied all requirements to continue receiving my scholarship
            allowance.</p>
                <input id="agree" type="checkbox" name="checkbox" class="tick-att">
            </div>
            <br>
            <div class="align-right">
                <input type="submit" class="button" name="submit" value="submit" >
            </div>
      </div>
    </div>
</from>
{% endblock %}

views.py

def timesheet(request):
return render(request, 'hrfinance/timesheet.html')

models.py

#consists of all the details in the timesheet
class Timesheet(models.Model):
studentID = models.CharField("Student ID", max_length=8, primary_key=True, default="")
studentName = models.CharField("Student Name", max_length=500, default="")
startDate = models.DateField("Start Date", max_length=8)
endDate = models.DateField("End Date", max_length=8)

def __str__(self):
    return self.studentID

【问题讨论】:

  • 这就是你的views.py吗??
  • @FazilZaid 是的...
  • 首先,了解如何在 django 视图中获取表单输入数据。到现在为止,离开关于javascript验证的事情
  • 如果您在模型中设置字段为必填项,我认为您甚至不需要 JS 验证。

标签: python django database forms


【解决方案1】:

正如 Fazil 已经说过的,请查看文档。但是在开始时给你一点帮助: 您缺少的是views.py 中的表单验证,例如:

def timesheet(request):
    user = request.user 
    form = yourform(request.POST or None)
    if form.is_valid():
        ....
        form.save()
    context = {
     'form':form,
     }
  return render(request, 'hrfinance/timesheet.html',context) 

form.save 命令将您的表单保存到数据库中。

您的&lt;form&gt; 标签缺少方法! (应该是 POST)。

我会建议遵循一个教程(来自 django 文档或任何其他的教程),以便您了解事情的工作原理。

总而言之: 您的问题(尤其是代码)越短,就越有可能有人愿意阅读它。 "&lt;br&gt;" 之类的东西应该被删掉。没有人关心你表单的风格。您的 JS 部分也应该被删除,因为它与问题无关。

【讨论】:

    猜你喜欢
    • 2016-07-07
    • 2017-05-13
    • 2017-09-04
    • 2016-10-15
    • 2013-02-28
    • 2017-03-06
    • 2016-11-22
    • 2020-03-07
    • 1970-01-01
    相关资源
    最近更新 更多