在django-localized-fields上保持唯一性

问题描述 投票:0回答:1

我正努力避免将重复的本地化项目存储在Django-rest-framework应用程序中,而Django数据库的django-localalized-fields程序包与PostgreSQL数据库一起存储,我找不到任何方法可以使此项工作。

https://pypi.org/project/django-localized-fields/

我已经尝试在序列化器中编写自定义重复检测逻辑,该逻辑可用于创建,但是为了进行更新,本地化字段变为空(​​它们是必填字段,因此我收到非空约束错误)。似乎是django-localized-fields实用程序正在导致此问题。

当我不通过单独定义它们而不覆盖序列化器中的创建/更新时,序列化器可以正确运行(创建/更新)。>

我还尝试过向模型中的数据库添加唯一选项,但是这不起作用-仍会创建重复项。使用标准的唯一方法,或django-localized-fields文档中的方法(uniqueness = ['en','ro'])。

我还尝试了Django中的UniqueTogetherValidator,它似乎也不支持HStore / localizedfields。

我希望能获得一些帮助,以帮助您跟踪如何在序列化程序中修复更新或在数据库中放置唯一约束。由于django-localized-fields在PostgreSQL中使用hstore,对于使用hstore保持唯一性的应用程序来说,这肯定是一个足够普遍的问题。

对于不熟悉的人,Hstore将项作为键/值对存储在数据库中。这是django-localized-fields如何在数据库中存储语言数据的示例:

“ en” =>“英语单词!”,“ es” =>“”,“ fr” =>“”,“ frqc” =>“”,“ fr-ca” =>“”

我正努力避免将重复的本地化项目存储在Django-rest-framework应用程序中,而Django数据库的django-localalized-fields程序包与PostgreSQL数据库一起存储,我找不到任何方法可以使此项工作。 (...

django python-3.x postgresql django-rest-framework hstore
1个回答
0
投票

django-localized-fields仅对同一语言约束唯一值。如果要实现一行中的值不与另一行中的值冲突,则必须在Django和数据库级别上对其进行验证。

© www.soinside.com 2019 - 2024. All rights reserved.