Flask日期未在创建时设置,但设置为更新

时间:2016-12-19 17:22:28

标签: flask flask-sqlalchemy flask-wtforms

views.py

@app.route('/new', methods = ['POST', 'GET'])
@login_required
def new():
    form = StudentForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            flash('All fields are required.')
            return render_template('form.html', action = 'new', form = form)
        else:
            student = students(
            request.form['first_name'], request.form['last_name'], \
            request.form['date_of_birth'], \
            request.form['date_of_join'], request.form['address']
            db.session.add(student)
            db.session.commit()
            return redirect(url_for('show_all'))
    return render_template('form.html', action = url_for('new'), form = form)


@app.route('/edit/<int:id>', methods = ['POST', 'GET'])
@login_required
def edit(id):
    item = students.query.get(id)
    form = StudentForm(obj=item)
    if request.method == 'POST':
        if form.validate_on_submit():
            item = students.query.get(id)
            form = StudentForm(obj=item)
            return render_template('form.html', action = url_for('edit',id = id), form = form)
        else:
            form.populate_obj(item)
            db.session.add(item)
            db.session.commit()
            return redirect(url_for('show_all'))
    return render_template('form.html', action = url_for('edit',id = id), form = form)

models.py

class students(db.Model):
    __tablename__ = "students"
    id = db.Column('id', db.Integer, primary_key = True)
    first_name = db.Column(db.String(25))
    last_name = db.Column(db.String(25))
    date_of_birth = db.Column(db.Date)
    date_of_join = db.Column(db.Date)
    address = db.Column(db.String(200))

forms.py

class StudentForm(Form):
    first_name = TextField("First Name:")
    last_name =  TextField("Last Name:")
    date_of_birth = DateField("Date of Birth:", format='%m/%d/%Y')
    date_of_join = DateField("Date of Joining:", format='%m/%d-%Y')
    address = TextAreaField("Address:")
    submit = SubmitField("Submit")

添加新项目时,所有其他字段都会添加到数据库中,但不会存储日期。我找不到问题究竟是什么。如果我使用form.validate()进行表单验证,则会在编辑期间存储日期字段。如果我使用form.validate_on_submit(),则在添加或编辑时不会存储日期字段...

0 个答案:

没有答案