Найти - Пользователи
Полная версия: Помощь в написании запроса к базе данных
Начало » Django » Помощь в написании запроса к базе данных
1
DmBand
Есть модели:
 # Skill - перечень навыков. К примеру: есть, пить, курить, спать, бежать, кричать и т.д.
class Skill(models.Model):
    name = models.CharField(max_length=50, verbose_name='Навык', db_index=True)
# City - города (Гродно, Брест и т.д.)
class City(models.Model):
    name = models.CharField(max_length=255, verbose_name='Город', db_index=True)
# User - пользователь, который живет в одном конкретном городе и может иметь от 1 до n навыков
class User(models.Model):
    name = models.CharField(max_length=30, verbose_name='Имя')
    city = models.ForeignKey(City, on_delete=models.PROTECT)
    skills = models.ManyToManyField(Skill, verbose_name='Навыки')

К примеру, в базе есть 3 пользователя:
1) Петя - живет в Гродно, умеет есть и пить
2) Маша - живет в Бресте, умеет есть, спать и кричать
3) Ваня - живет в Гродно, умеет курить

ВОПРОС
С сайта приходит запрос, что надо отобразить пользователей, которые живут в Гродно и умеют И есть, И пить, И курить.
В одной переменной я храню полученный город - request_city, к примеру, а в другой - список навыков (пусть будет skills_list)
Я делал таким образом:
 result = User.objects.filter(city=request_city, skills__in=skills_list)

Я ожидал, что БД выберет именно те объекты, которые отвечают всем условиям фильтра. Но в результат приходит и Петя, и Ваня, хотя петя не умеет курить, а Ваня не умеет есть и пить.
Как описать обращение к БД, чтобы, если все переданные данные есть у человека, то он учитывался в результате, а если хоть одного нету, то человек не шёл в результат?
VadimK
.filter(skills='курить').filter(skills='пить')..filter(skills='есть')

DmBand
VadimK
.filter(skills='курить').filter(skills='пить')..filter(skills='есть')
Я делал такое через цикл for, но результат не поменялся
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB