<p>我找到了一个办法,但不确定这是不是最好的办法。
因此,我们在模型上创建新的函数来更新和传递JSON对象,并使用该对象设置属性。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>from . import db
class ItemModel(db.Model):
__tablename__ = "items"
id = db.Column(db.Integer, primary_key=True)
code = db.Column(db.String(), nullable=False)
name = db.Column(db.String(), nullable=False)
tags = db.Column(db.String(), nullable=False)
created_at = db.Column(db.DateTime, server_default=db.func.now())
updated_at = db.Column(
db.DateTime,
server_default=db.func.now(),
server_onupdate=db.func.now()
)
def update_to_db(self, data):
for key, value in data.items():
setattr(self, key, value)
db.session.commit()
</code></pre>
<p>现在在resource中,我们使用来自请求的输入JSON调用update函数。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>@classmethod
def put(self, id: int):
item = ItemModel.find_by_id(id)
if(item):
try:
item.update_to_db(
request.get_json()
)
except ValidationError as err:
return err.messages, HTTPStatus.BAD_REQUEST
return {'message': item_schema.dump(item)}, HTTPStatus.OK
return {'message': gettext('item_not_found')}, HTTPStatus.NOT_FOUND
</code></pre>
<p>这是可行的,但仍然不确定是否有任何最好的方法来做到这一点。你知道吗</p>