在django中将字符串与数据库匹配

时间:2018-06-06 09:01:16

标签: python django django-models django-templates django-views

用户将登陆网站填写注册表。登记表有一个问题如下  你想学习哪些科目?

用户回答 - 我想学习印地语和英语

 sentence="I want to study Hindi and english"

我在下面显示了2个数据库。现在,用户的答案应该与一个数据库表匹配,并且具有最大的准确性,应该选择与最大精度匹配的数据库表。 如果用户以不同的方式写作

,我无法与准确性相匹配
  
      
  1. 我正在学习印地语和英语
  2.   
  3. 我想学习印地语和英语。
  4.   

以上两句话的含义相同,但我没有正确地与数据库表进行适当的匹配。请帮我解决这个问题。

数据库:

 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 :(得分:0)

看起来需要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