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