为了添加任务,我做了:
task = TaskList(task_name=form_add_task.task_name.data, doer=current_user) db.session.add(task) db.session.commit()
现在,用户和任务有一对多的关系。我试图在UI中为特定用户的每个任务显示复选框(task\u status列)。如果用户选中复选框(可以是一个或多个)并单击“更新”按钮,我想通过更新将任务状态更改为1
如果特定用户选中一个或多个复选框,如何将其任务状态更新为1
型号.py
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, nullable=False, index=True)
email = db.Column(db.String(120), unique=True, nullable=False, index=True)
password_hash = db.Column(db.String(128))
last_seen = db.Column(db.DateTime, default=datetime.utcnow)
tasks = db.relationship('TaskList', backref='doer', lazy='dynamic')
class TaskList(db.Model):
id = db.Column(db.Integer, primary_key=True)
task_name = db.Column(db.String(140), nullable=False)
task_status = db.Column(db.Integer, default=0)
date_created = db.Column(db.DateTime, index=True, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
表单.py
class AddTaskForm(FlaskForm):
task_name = StringField('task', validators=[DataRequired()])
add_task_submit = SubmitField('Add Task')
class UpdateTaskForm(FlaskForm):
task_status = BooleanField()
update_task_submit = SubmitField('Update Task')
路线.py
@app.route('/mytask', methods=['POST', 'GET'])
@login_required
def my_task():
form_add_task = AddTaskForm()
form_update_task = UpdateTaskForm()
if form_add_task.validate_on_submit():
task = TaskList(task_name=form_add_task.task_name.data, doer=current_user)
db.session.add(task)
db.session.commit()
user = User.query.filter_by(username=current_user.username).first()
task_list = user.tasks.filter_by(task_status=0)
if form_update_task.validate_on_submit():
if form_update_task.task_status.data is True:
**HOW DO I UPDATE THE CHECKBOXES**
return render_template('my_task.html', title='my tasks',
form_add_task=form_add_task,
form_update_task=form_update_task,
task_list=task_list,
user=user
)
首先,您需要更新任务表单中的一些内容来标识您的任务。现在,对象只有一个布尔字段,但它无法告诉flask或sql alchemy应该更新哪个任务。因此,我会在更新表单中添加
task.id
或者按照您的逻辑添加task.task_name
字段之后,我将使用
task.id
或task.task_name
字段从数据库中获取需要更新的任务,将task_status
字段设置为1并将其持久化相关问题 更多 >
编程相关推荐