вызов локатора поля фильтра django - PullRequest
0 голосов
/ 01 апреля 2012

Если мои данные POST из отправки формы = "Джон Доу", и я пытаюсь сопоставить их с объектом в этой модели:

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

Как мне это сделать?

Я пытался:

person = Person.objects.filter(last_name__in=post_data,first_name__in=post_data)

Это не работает, потому что локатор полей "__in" ищет список.

Я пытался:

    person = Person.objects.filter(last_name__in=list(post_data),first_name__in=list(post_data))

Это не работает, потому что я создал список из одного элемента с элементом «Джон Доу», который не соответствует ни имени, ни фамилии, ни объекта в человеке.

Пожалуйставыручить новичка.Спасибо!

1 Ответ

1 голос
/ 01 апреля 2012

Вы можете использовать что-то вроде этого:

    from django.db.models import Q
    ...
    for w in post_data.split():
      qs = qs.filter(Q(first_name__icontains=w)|Q(last_name__icontains=w))

Он разбивает входную строку и сопоставляет каждое слово с именами first_name или last_name.

...