【发布时间】:2017-12-02 00:19:38
【问题描述】:
下午好
我正在将 django 与 postgresql 一起用于应用程序。
我有一个模型,其中包含一个字段,该字段是一个字符字段并存储 none/one/many 对外部数据库的引用。
- 如果 none 为空
- 如果一个就是引用本身(“CCCC”)
- 如果很多,则每个引用用分号分隔(“AAAA;BBBB;CCCC;DDDD;EEEE;”)。这可以在下面看到:
模型的python文件示例如下:
Models.py file:
class Data(models.Model):
...
external_database_id = models.CharField(max_length=255)
...
使用字符域的原因是,在开始时,所有这些信息只是为了向用户显示,并没有应用其他选项。
现在我需要使用 django 实现/应用查找过滤器。我有一个包含一些引用的数组:
For example: [AAAA,BBBB,EEEE]
我需要知道数据库中的任何条目是否与此列表中的任何条目匹配
到目前为止,我已经尝试过“external_database_id__in”查找过滤器“https://docs.djangoproject.com/en/1.11/ref/models/querysets/#in”。它适用于“none”和“one”但不适用于“many”,因为没有匹配的整个字符串到列表...
- none: "" in [AAAA,BBBB,EEEE] --> FALSE(如预期)
- 一个:[AAAA,BBBB,EEEE] 中的“CCCC” --> FALSE(如预期的那样)
- 一个:[AAAA,BBBB,EEEE] 中的“EEEE” --> TRUE(如预期)
- 很多:“AAAA;BBBB;”在 [AAAA,BBBB,EEEE] --> FALSE(如预期的那样,但不受欢迎,因为 TRUE 是正确的答案)
- 很多:“AAAA;CCCC;”在 [AAAA,BBBB,EEEE] --> FALSE(如预期的那样,但不受欢迎,因为 TRUE 是正确的答案)
- 很多:“CCCC;DDDD;”在 [AAAA,BBBB,EEEE] --> FALSE(如预期)
我曾想过做相反的事情,但在 django 或 postgresql 中找不到方法:
- none: any[AAAA,BBBB,EEEE] in "" --> FALSE
- one: "CCCC" 中的任何[AAAA,BBBB,EEEE] --> FALSE
- 一个:“EEEE”中的任何[AAAA,BBBB,EEEE] --> TRUE
- 许多:“AAAA;BBBB;”中的任何[AAAA,BBBB,EEEE] --> 是的
- 许多:“AAAA;CCCC;”中的任何[AAAA,BBBB,EEEE] --> 是的
- 许多:“CCCC;DDDD;”中的任何[AAAA,BBBB,EEEE] --> 错误
有什么想法吗? 非常感谢!
【问题讨论】:
标签: python django postgresql django-models lookup