У меня есть необработанный SQL-запрос, который я пытаюсь запустить в Django.Когда я отображаю объект RawQuerySet, он показывает правильный запрос, но не возвращает никакого вывода.
Я попытался преобразовать параметры в строку и попытался добавить к ним кавычки, но это не сработало.
Я также пытался выполнить тот же запрос, но я жестко закодировал параметры.Это сработало.
Я также открыл dbshell, чтобы попытаться увидеть, возвращает ли запрос вывод.Это тоже отлично работает.
Это то, что я запустил в моей dbshell:
select id FROM recommender_item WHERE
id in (select item_id from
recommender_item_likes where user_id = 1)
and color = 'Black';
Обратите внимание, что следующий запрос не работал:
select id FROM recommender_item WHERE
id in (select item_id from
recommender_item_likes where user_id = 1)
and color = Black;
Этофактический запрос, который я хочу выполнить:
Item.objects.raw('select id FROM recommender_item WHERE
id in (select item_id from recommender_item_likes where
user_id = %s) and %s = %s', [request.user.id, user_pref, pref_choice,])
Это тот же запрос с жестко заданными параметрами, который работает:
Item.objects.raw('select id FROM recommender_item WHERE
id in (select item_id from recommender_item_likes where user_id = %s)
and color = "Black"', [request.user.id])
Вывод в моем шаблоне должен быть именно таким списком идентификаторов.: 1, 64, 437, 1507, 1685
Однако сейчас он просто возвращает []
Это объект RawQuerySet в обоих случаях, соответственно:
<RawQuerySet: select id FROM recommender_item WHERE
id in (select item_id from recommender_item_likes where user_id = 1)
and color = Black>
и
<RawQuerySet: select id FROM recommender_item WHERE
id in (select item_id from recommender_item_likes where user_id = 1)
and color = "Black">
Фактический выполняемый SQL-запрос, полученный с панели отладки Django:
select id FROM recommender_item WHERE
id in (select item_id from recommender_item_likes where
user_id = '1') and '''color''' = '''"Black"'''
models.py
class Item(models.Model):
#id = models.UUIDField(primary_key = True, default = uuid.uuid4, help_text = 'Unique ID for this particular item')
item_type = models.CharField(max_length = 200, null = True, blank = True)
price = models.CharField(max_length = 200, null = True, blank = True)
color = models.CharField(max_length = 200, null = True, blank = True)
image_URL = models.CharField(max_length = 1000, null = True, blank = True)
fit = models.CharField(max_length = 200, null = True, blank = True)
occasion = models.CharField(max_length = 200, null = True, blank = True)
brand = models.CharField(max_length = 200, null = True, blank = True)
pattern = models.CharField(max_length = 200, null = True, blank = True)
fabric = models.CharField(max_length = 200, null = True, blank = True)
length = models.CharField(max_length = 200, null = True, blank = True)
likes = models.ManyToManyField(User, blank = True, related_name = 'item_likes')