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.2.3", или
- Результаты, содержащие ",1.2.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
.