我正在开发一个使用 Flask 和 PostgreSQL 数据库以及 SQLAlchemy 的项目。
I have Group
具有以下列表的对象User
属于该组成员的 ID。由于某种原因,当我尝试将 ID 添加到组时,它无法正确保存。
如果我尝试members.append(user_id)
,它似乎根本不起作用。但是,如果我尝试members += [user_id]
,id 将显示在列出所有组的视图中,但如果我重新启动服务器,则添加的值将不存在。然而,初始值是。
相关代码:
最初将组添加到数据库:
db = SQLAlchemy(app)
# ...
g = Group(request.form['name'], user_id)
db.session.add(g)
db.session.commit()
团体班:
from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.dialects.postgresql import ARRAY
class Group(db.Model):
__tablename__ = "groups"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
leader = db.Column(db.Integer)
# list of the members in the group based on user id
members = db.Column(ARRAY(db.Integer))
def __init__(self, name, leader):
self.name = name
self.leader = leader
self.members = [leader]
def __repr__(self):
return "Name: {}, Leader: {}, Members: {}".format(self.name, self.leader, self.members)
def add_user(self, user_id):
self.members += [user_id]
我用于更新组的测试功能:
def add_2_to_group():
g = Group.query.all()[0]
g.add_user(2)
db.session.commit()
return redirect(url_for('show_groups'))
谢谢你的帮助!