更新关系flask sqlalchemy中的重复数据

时间:2014-11-19 15:46:49

标签: python flask sqlalchemy

我有一个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,并插入包含已修改数据的新行,而不是更新现有行一。

显然这不行,因为它用垃圾填充数据库。 问题是:我可以让它只是修改现有的行,或者我必须"清理"数据库在预处理器或后处理器中手动操作?

1 个答案:

答案 0 :(得分:1)

解决了它。事实证明,我没有传递相关对象的主键(自动增量id)的任何值,因此它不知道要更新的内容。

请求片段应该如下...,"translated_field":[{"id":3 "language":"en", "value": "some value"}],...}