2016-12-21 2 views
0

Я разрабатываю веб-приложение Python-Flask, которое должно работать как википедия для политиков. Когда я создаю нового политика, он помечается как проект по умолчанию, который может быть принят участником с более высоким рейтингом. Поэтому, когда я создаю страницу с политиками, это проверено в качестве черновика, и когда администратор принимает эту черновик, значение составляет значение равно false. Я хотел бы знать, как я пометить/снять флажок на основе значения столбца атрибута черновик, который является boolean (True/False). Затем я хочу изменить его на основе результата моей формы. Это функция редактирования, как вы увидите:Импортировать значение флажка из базы данных

Это мой Политик форма, один я использую для редактирования:

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(),)) 
    draft = RadioField('Draft', choices=[(True,'Yes'),(False,'No')],) 
    submit = SubmitField('Add Politician', validators=(validators.Optional(),)) 

И я хочу, чтобы проверить, что проект строки на моем HTML jinja2 зрения , который:

<div class="form-group"> 
         <label for="draft">Draft</label> 
         <input type="checkbox" name="draft" class="form-control" id="email" value="{{politician.draft}}"> 
        </div> 

мне нужно использоваться проверил ли в параметре? Как я могу отметить, что это True и снять флажок, если его False, а затем отправить это изменение на мой контроллер?

политики/views.py/edit_politician

@politicians_blueprint.route("/edit_politician/<idPol>", methods=["POST", "GET"]) 
@login_required 
def edit_politician(idPol=1): 
    form = PoliticForm() 
    politician = Politic.query.filter_by(idPolitician=idPol).first() 
    if request.method == "POST": 
    politician.publicName = request.form['publicName'] 
    politician.completeName = request.form['completeName'] 
    politician.draft = request.form['draft'] 
    if request.form.get('date') != 'None': 
     politician.startDate = datetime.datetime.strptime(request.form.get('date'), '%m/%d/%Y').strftime('%Y-%m-%d') 
     print politician.startDate 
    if request.form.get('date2') != 'None': 
     politician.endDate = datetime.datetime.strptime(request.form.get('date2'), '%m/%d/%Y').strftime('%Y-%m-%d') 
     print politician.endDate 
    db.session.commit() 
    return redirect(url_for('home.home')) 
    elif request.method == "GET": 
    print politician.startDate 
    if politician.startDate is not None: 
     dateStart = politician.startDate.strftime("%Y-%m-%d") 
     politician.startDate = datetime.datetime.strptime(dateStart, '%Y-%m-%d').strftime('%m/%d/%Y') 
    if politician.endDate is not None: 
     dateEnd = politician.endDate.strftime("%Y-%m-%d") 
     politician.endDate = datetime.datetime.strptime(dateEnd, '%Y-%m-%d').strftime('%m/%d/%Y') 

    return render_template("editPolitician.html", politician=politician) 

Любые идеи? Я действительно борется с этим ..

С уважением

ответ

0

Вы могли бы попробовать что-то вроде

<input type="checkbox" name="draft" class="form-control" id="email" {% if politician.draft %}checked="checked"{% endif %}> 

Или изменить состояние флажка с помощью JQuery (если вы его используете)

<script> 
    {% if politician.draft %} 
    $('input[name="draft"]').prop('checked', true); 
    {% endif %} 
</script>