Предположим, что у меня есть список навыков:запросов с несколькими условиями ManyToMany
skills = ['Python', 'Django', 'Java']
Пусть я тогда выполнить
Freelancer.object.filter(Q(skills=skills[0]))
Оба Фрилансеры имеют этот навык, но, несмотря на запрос не является цельность их репертуара Я все еще хочу, чтобы они появились, и они будут. Выступаю:
У фрилансера есть все три умения, поэтому я хочу, чтобы он появился. Freelancer два только соответствует 2/3, поэтому я не хочу, чтобы он появлялся, но он, очевидно, будет из-за запроса. Как я могу это сделать?
Предположим, что это возможно с Q
и skills
- это список размеров n
. Возможно ли выполнить этот запрос динамически?
# models.py
class Freelancer(models.Model):
def __unicode__(self):
return self.first_name
user = models.OneToOneField(User)
first_name = models.CharField(max_length=128)
surname = models.CharField(max_length=128)
university = models.CharField(max_length=256)
biography = models.TextField(default="")
skills = models.ManyToManyField(Skill, blank=True)
profile_picture = models.ImageField(blank=True, upload_to='freelancer/images')
object = UserManager()
class Skill(models.Model):
skill = models.TextField(primary_key=True, max_length=128)
def __unicode__(self):
return self.skill
EDIT:
Для ясности я предоставил POST часть представления
# views.py
form = FilterFreelancerForm(request.POST)
skills = request.POST.getlist('skills_select')
queries = [Q(skills=s) for s in skills]
freelancers = Freelancer.object.filter(*queries)
Можете ли вы поместить свое определение класса Freelance, наиболее важно, как навыки co Определяется lumn? – Maciek
Я исправил свой пост. – Nanor