用于过滤器查询的django自定义函数

django custom function for filter query

我的模型中有一个名为 test_data = models.TextField(...) 的字段,该模型名为 MyOrm

而这个 test_data 包含实际上是字符串的数据,一些包含 JSON 数据,一些引用 blob-url.

现在我正在努力简化我的数据。所以我想过滤所有 test_data 不是 JSON 的 MyOrm 对象。

我只是 storing/trying 将一些元数据与 url 一起存储,然后我将它们转换。

任何人都可以建议我这样做的方法吗??

伪代码:

select all my-orm where is_not_json(my-orm.test-data)

据我所知,没有这方面的数据库功能。您可以定义自己的,但这更多的是数据库编程。

我认为你别无选择,只能枚举 MyOrm 模型对象,并检查你是否可以 JSON 解码这些对象,使用:

import json

for item in MyOrm.objects.all():
    try:
        json.loads(item.test_data)
    except ValueError:
        # is invalid JSON, process
        # …
        pass

或者如果内存可能有问题,您可以使用 .iterator(…) [Django-doc]:

import json

for item in MyOrm.objects.all()<b>.iterator()</b>:
    try:
        json.loads(item.test_data)
    except ValueError:
        # is invalid JSON, process
        # …
        pass