Django пользовательская функция для фильтрации запросов

В моей модели есть поле под названием test_data = models.TextField(...), а модель называется MyOrm

и это test_data содержит данные, которые на самом деле являются строкой, некоторые содержат данные JSON, а некоторые ссылаются на blob-url.

Теперь я пытаюсь упорядочить свои данные. Поэтому я хочу отфильтровать все MyOrm объекты, чьи test_data не JSON.

Я просто храню/пытаюсь хранить некоторые мета-данные вместе с 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
Вернуться на верх