我有查询选择数据库中的用户列表。每个用户对象都有标签列表。在Flask-SQLAlchemy中对AppenderBaseQuery属性的python赋值无效
users = db.relationship('User', secondary=user_tag, backref=db.backref('tags', lazy='dynamic'), lazy='dynamic')
当从查询结果返回我的用户对象:
ID {INT} 1
标签{AppenderBaseQuery}这是在Tag模型中使用这种关系设置(选择...)
都好,但我希望新的列表分配给tags属性
user.tags=list()
但此行对对象没有任何影响,并且用户仍包含AppenderBaseQuery。这个属性如何变得不可变。我不明白。对于Python来说还是新的,如果问题很蠢,对不起。
编辑:
我不会改变数据库。我试图从会话中分离用户对象而没有成功。我已经有了标签列表,只是想将其设置为用户对象标签列表。在我将它序列化为json并返回用户列表的响应之后。 Usualy我使用url_for创建标记url,但是这次我想返回标记列表以便让事情更快
我不会改变数据库。我试图从会话中分离用户对象而没有成功。我已经有了标签列表,只是想将其设置为用户对象标签列表。在我将它序列化为json并返回用户列表的响应之后。 Usualy我使用url_for创建标记url,但是这次我想返回标记列表以便让事情更快 – makkasi
在这种情况下,我建议在序列化期间设置标记。正如您已经注意到appender query属性用于处理关系,即位于数据库中的数据。如果我正确地理解了你,你有一组属于用户的标签,所以在我看来,你最好的选择是在序列化过程中将它们合并,而不是先尝试将它们设置在用户对象上。但这只是一个意见。 –
另外你应该在你的问题中包括这个。因为它现在是一个[XY问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem):你问别的东西而不是问什么你真的想做,在这种情况下添加额外的数据到序列化的DB对象。 –