Сопоставить строку с базой данных в Django - PullRequest
0 голосов
/ 06 июня 2018

Пользователь заходит на сайт и заполняет регистрационную форму.Форма регистрации содержит вопрос, отображаемый ниже. Какие предметы вы хотите изучать?

Ответ пользователя - Я хочу изучать хинди и английский

 sentence="I want to study Hindi and english"

У меня есть 2 базы данных, показанные ниже.Теперь ответ пользователя должен совпадать с одной таблицей базы данных с максимальной точностью. Должно быть выбрано соответствие таблицы базы данных с максимальной точностью.Я не могу соответствовать с точностью, и если пользователи пишут по-другому, как

  1. Я изучаю хинди и английский
  2. Я хочу изучать хинди и английский.

Приведенные выше 2 предложения означают то же самое, но правильное сопоставление с таблицей базы данных выполняется не мной должным образом.Пожалуйста, помогите мне решить эту проблему.

База данных:

 Class_A

   id                     subject
    1                     Hindi
    2                   English
    3                   Physics

Class_B

   Id                     subject
    1                     Hindi
    2                      Math
    3                   Science

view.py

def submission(request):
    obj = Registration.objects.latest('id')
    obj1 = Registration.objects.filter(name__contains=obj1)
    for a in obj1:
        sentence= a.subject
        word = sentence.split()
        class_a=class_A.objects.all()
        class_b=class_B.objects.all()

        if class_a in  word:
            return render(request,'data/submission.html',{'Class':'Your Are in Class A'})
        elif class_b in  word:
            return render(request, 'data/submission.html', {'Class': 'You are in Class B'})

Регистрация - это таблица базы данных регистрации пользователей.

1 Ответ

0 голосов
/ 06 июня 2018

выглядит так, как вам нужно icontains

if class_a.filter(subject__icontains=word).exists():

подробнее в примере:

class Class_A(models.Model):
    subject = models.CharField(max_length=15, null=True, blank=True)

In [9]: Class_A.objects.values_list('subject', flat=True)
Out[9]: ['Hindi', 'English', 'Physics']

In [10]: Class_A.objects.filter(subject__icontains='Hindi').exists()
Out[10]: True

In [11]: word = ['i', 'want', 'to', 'study', 'Hindi', 'and', 'english']

In [12]: Class_A.objects.filter(subject__in=word).exists()
Out[12]: True
...