【发布时间】:2018-06-22 21:05:51
【问题描述】:
我是烧瓶和构建票证分配器应用程序的新手。生成器端点将始终将系统中最旧的票证(状态 = q)分配给登录的人。然后他将解析(发布方法 = s)票证,或者可以将其状态更新为待处理(发布方法 = p)。
@main.route('/ticket/generator', methods=['GET', 'POST'])
@login_required
def generate_ticket():
ticket = Ticket.query.filter_by(status='q').order_by(Ticket.create_date).first()
form = GenerateTicketForm(obj=ticket)
if form.validate_on_submit():
ticket.ticket_id = form.ticket_id.data
ticket.status = form.status.data
db.session.add(ticket)
db.session.commit()
flash('Ticket Status Update Successfully.')
return redirect(url_for('main.generate_ticket'))
return render_template('generate_ticket.html', form=form)
当票已分配给某人时,我想更改状态,以便其他人不会获得相同的票。所以我创建了一个类方法来更改获取最旧票证时的状态:
@classmethod
def activate_tkt_flag(cls, ticket_id_, create_date_):
ticket_db_obj = cls(ticket_id=ticket_id_, create_date=create_date_)
ticket_in_memory = Ticket.query.get(ticket_db_obj.ticket_id)
ticket_in_memory.status = 'a'
db.session.commit()
return ticket_in_memory
如果在第一个查询中的 ticket 对象之后调用它,它会以某种方式重写循环并分配一个新票证并忘记前一个票证,它不能再重写票证并且我收到该错误: Key (ticket_id)=(T5) already exists UPDATE ticket SET ticket_id=%(ticket_id)s, status=%(status)s WHERE ticket.ticket_id = %(ticket_ticket_id)s'] [parameters: {'ticket_id': 'T5', 'status': 's', 'ticket_ticket_id': 'T1'}]。如果有人有更好的想法如何做到这一点,我将不胜感激,我有点卡在这里。这是表格的样子。
【问题讨论】:
标签: python-3.x flask flask-sqlalchemy flask-wtforms