2016-09-16 3 views
1

У меня есть эти модели:модели Django в Many2Many отношений: фильтр группой членов

class Skill(models.Model): 
    name = models.CharField(max_length=20) 


class Engineer(models.Model): 
    name = models.CharField(max_length=20) 
    skill = models.ManyToManyField(Skill) 
    city = models.ForeignKey(City) 


class City(models.Model): 
    city = models.CharField(max_length=20) 

У меня есть 2 вопроса, пожалуйста, сэкономить свое время, чтобы помочь мне. Спасибо :)

1) Я хочу фильтровать Инженера группой навыков. Предположим, мне нужно фильтровать инженеров, у которых есть эти навыки ['HTML', 'python', 'CSS']. Как я могу это сделать?

2) Я хочу фильтровать Инженер группой навыков И в определенной области. Предположим, что мне нужно фильтровать инженеров, у которых есть эти навыки ['HTML', 'python', 'CSS'] И этот инженер должен жить в Анахайме. Как я могу это сделать?

ответ

1

Вы должны прочитать queries that span relationships часть документов. В основном запросы выполняются в одном и том же синтаксисе, который вы делаете ForeignKey lookups. (В случае, если вы не используете m2m through хотя)

Также вы не имеете никакого отношения между инженером и города, если вы хотите, чтобы иметь возможность ответить на вопросы, как ваш второй вопрос, вам необходимо добавить ForeignKey от Инженер до Город.

1.

skills = Skill.objects.filter(name__in=['HTML', 'Python', 'Css']) 
engineers = Engineer.objects.filter(skill__in=skills) 

2.

city = City.objects.get(name='Anaheim') 
engineers = Engineer.objects.filter(skill__in=skills, city=city) # Considering you put a ForeignKey from Engineer to City 
+0

Спасибо SpiXel! –

Смежные вопросы