我有一个Flask-restless API来添加和检索数据库中的数据。 某些字段需要为客户端进行本地化,因此有一个辅助表,其中包含每个字段的语言和字符串。
class MyClass(Base):
__tablename__ = 'myclass'
id = Column(Integer, primary_key = True)
translated_field = relationship('TranslatedField')
和翻译表:
class TranslatedField(Base):
__tablename__ = 'translated_field'
id = Column(Integer, primary_key = True)
myclassID = Column(Integer, ForeignKey('myclass.id'))
language = Column(String(2))
value = Column(Text)
通过JSON插入工作正常{...," translated_field":[{"语言":" en","值&#34 ;:"某些价值"}],...}
但是当我对PUT
请求执行相同操作时,它会在translated_field
表的现有行中将myClassID设置为null,并插入包含已修改数据的新行,而不是更新现有行一。
显然这不行,因为它用垃圾填充数据库。 问题是:我可以让它只是修改现有的行,或者我必须"清理"数据库在预处理器或后处理器中手动操作?
答案 0 :(得分:1)
解决了它。事实证明,我没有传递相关对象的主键(自动增量id)的任何值,因此它不知道要更新的内容。
请求片段应该如下...,"translated_field":[{"id":3 "language":"en", "value": "some value"}],...}