Django Queryset filter
Моя таблица django содержит поле, содержащее строки, разделенные запятыми.
class RawData(TimeStampModelMixin):
id = models.UUIDField(primary_key=True)
media = models.TextField()
Столбец media будет содержать значения типа 'Multimedia, TV', 'Multimedia, TV Station'. Мне нужно отфильтровать строки таблицы Rawdata так, чтобы в столбце media содержалось 'TV' или 'Multimedia'. __icontains не дает точного результата. Если я сделаю
Rawdata.objects.filter(media__contains='TV')
то он вернет обе строки 'Multimedia, TV', 'Multimedia, TV Station'. Но мне нужна только строка 'Мультимедиа, ТВ'.
Есть ли способ достичь этого через API queryset?
Как предложил Хедде, лучше создать модель типа MediaType
и установить соответствующие отношения:
class MediaType(models.Model):
name = models.TextField()
class RawData(TimeStampModelMixin):
id = models.UUIDField(primary_key=True)
media = models.ManyToManyField(MediaType)
Тогда вы будете уверены, что в поисках конкретного типа (типов) вы не ошибетесь с некоторыми похожими типами.
Это может быть не лучший ответ. но если посмотреть, что именно вам нужно, возможно, вы сможете сделать эту работу с имеющимися у вас данными.
Rawdata.objects.filter(
media__startswith='Multimedia',
media__endswith='TV'
)