2016-11-13 11 views
0

私はWEB APPを開発していますが、ある時点で私のPoliteテーブルに新しいエントリを作成したいと思っています。私はいくつかの日付を追加するまでそれを行うことができます。フォームは間違った日付形式のため入力を受け付けません。私のフォームはたstartDateフィールドもendDateにフィールドを検証することはできませんのでDateForm Python-Flask - [有効な日付の値ではありません]

class PoliticForm(FlaskForm): 
    publicName = StringField('Public Name', validators=[DataRequired("Please enter politician public name.")]) 
    completeName = StringField('Complete Name', validators=[DataRequired("Please enter politician complete name.")]) 
    startDate = DateField('Start Date', format='%m-%d-%Y', validators=[DataRequired("Please enter the politician start Date.")]) 
    endDate = DateField('End Date', format='%m-%d-%Y', validators=(validators.Optional(),)) 
    submit = SubmitField('Add Politician', validators=(validators.Optional(),)) 

何とか日付フィールドイマイチ右:私はこのフォームを持っている...それに

を見てみましょう。 これは私の作成機能である:私は次の取得

@app.route("/create_politician", methods=["GET", "POST"]) 
@login_required 
def create_politician(): 
    form = PoliticForm() 

    if request.method == "POST": 
    print form.validate() 
    flash(form.errors) 
    if form.validate() == False: 
     return render_template('createPolitician.html', form=form) 
    else: 
     print form.startDate.data 
     newpolitician = Politic(form.publicName.data, form.completeName.data, form.startDate.data, form.endDate.data) 
     print form.startDate.data 
     db.session.add(newpolitician) 
     db.session.commit() 
     return redirect(url_for('home')) 

    elif request.method == "GET": 
    return render_template("createPolitician.html", form=form) 

とそのフラッシュ(form.errors)上

{ 'たstartDate':[ '政治家の開始を入力してください。日付 '] 'endDateに。':[u'Not有効な日付値']}

models.py

class Politic(db.Model): 
    __searchable__ = ['publicName', 'completeName'] 
    __tablename__ = 'politics' 

    idPolitician = db.Column(db.Integer, primary_key=True) 
    publicName = db.Column(db.String(150)) 
    completeName = db.Column(db.String(300)) 
    startDate = db.Column(db.Date) 
    endDate = db.Column(db.Date) 

    def __init__(self, publicName, completeName, startDate, endDate): 
    self.publicName = publicName.title() 
    self.completeName = completeName.title() 

.htmlを

<form method="POST" action="/create_politician"> 
     {{ form.hidden_tag() }} 

     <div class="form-group"> 
      {{ form.publicName.label }} 
      {{ form.publicName }} 
     </div> 

     <div class="form-group"> 
      {{ form.completeName.label }} 
      {{ form.completeName }} 
     </div> 

     <div class="form-group"> 
      {{ form.startDate.label }} 
      {{ form.startDate }} 
     </div> 

     <div class="form-group"> 
      {{ form.endDate.label }} 
      {{ form.endDate }} 
     </div> 

     {{ form.submit(class="btn-primary") }} 

     </form> 

任意のアイデアは、何が間違っています。フォームが求めているものと一致するように日付入力をフォーマットする方法はありますか?

はあなた

よろしくは

答えて

0

実際に、フォームはその形式で検証しますありがとうござい%Y-%M-%D、およびお使いのフィールド定義フォーマットで= '%M-%のd-%Y'何かの理由で私のために働いていないので、試してみてください: - datefieldの定義でformat = '%m-%d-%Y'を削除するようにフラスコのデフォルトフォーマットを維持してください あなたのビュー%Y-%m-%dにフォーマットしてください

これが役に立ちます

関連する問題