Django запрос для поиска значения столбца?

Каков запрос Django для этого?

Данные БД -

col1     |    Col2
-------------------------
sahil1   | Cat 1.2.3
sahil2   | 1.2.3-XY2
sahil3   | 9.8.7,1.2.3,11.12.13
sahil4   | 1.2.3
sahil5   | 9.8.4,1.2.3-XY2,9.8.7
sahil6   | Cat 1.2.3,9.8.2,1.2.3

Мне нужна только запись, которая содержит значения "1.2.3", а не как - ("Cat 1.2.3" или "1.2.3-XY2" или любое другое подобное значение). И шаблон "1.2.3" может быть в любом месте столбца, где значение столбца также может иметь значения, разделенные запятыми.

Желаемый результат -

col1     |    Col2
-------------------------
sahil3   | 9.8.7,1.2.3,11.12.13
sahil4   | 1.2.3
sahil6   | Cat 1.2.3,9.8.2,1.2.3

Когда я выполняю следующий запрос Django -

col2_count = TableName.objects.filter(col2__contains="1.2.3")

Получаю все записи, но мне нужны только записи, которые содержат значения "1.2.3", а не как - ("Cat 1.2.3" или "1.2.3-XY2" или любое другое подобное значение).

Как мне реализовать это в Django?

Ваша структура данных немного странная, на мой взгляд, вы должны иметь отдельные объекты для каждой из этих записей, а не хранить потенциально разделенные запятыми значения. Однако, вы можете сделать это, объединив вместе объекты Django Q():

  1. Полное совпадение с "1.2.3", или
  2. Результаты, содержащие ",1.2.3", или
  3. Результаты, содержащие ", 1.2.3"
from django.db.models import Q

col_2_count = TableName.objects.filter(
   Q(col2="1.2.3")|
   Q(col2__icontains=",1.2.3")|
   Q(col2__icontains=", 1.2.3")
)

Поскольку у вас есть множество возможных вариантов, вам нужно соединить несколько вариантов Q() вместе. Символ | рассматривается как OR.

Вернуться на верх