views.py
def search(request):
"""""""
if 'search' in request.POST:
search_keyword = request.POST.get('search_keyword')
reports = reports.filter(Q(incident_description__icontains=search_keyword) | Q(incident_number__icontains=search_keyword) | Q(reportperson__name__icontains=search_keyword))
"""""""
return render(request,'search.html',{'searchform':searchform})
models.py
class Report(models.Model):
user = models.ForeignKey(User, null=False)
incident_number = models.CharField('Incident Number', max_length=100)
incident_description = models.TextField('Incident description', null=True, blank=True)
class ReportPerson(models.Model):
report = models.ForeignKey(Report)
action_type = models.CharField(max_length=100, choices=ACTION_TYPE)
name = models.CharField('Name', max_length=100)
上述视图从报告模型和报告人模型执行关键字搜索(在模型字段中搜索数据)。
存储在报告模型中的报告可以包含2个以上的报告人详细信息。
在数据库中,值将是这样的,
如果报表和报表人员表中的值与图像中的值相同,则报表模型为
报告人模型是
这里,报告有两个报告人详细信息。如果我用这种情况进行搜索,则会显示相同的报告两次。报告人详细信息的数量,显示同一报告的计数一次又一次地变化。
我想知道如何处理这个问题,这种情况正在发生,因为我正在使用Reportperson表中的名称搜索。问题正在从report=reports.filter(....| Q(reportperson__name__icontains=search_keyword))
发生。需要帮助。
答案 0 :(得分:2)
SELECT DISTINCT怎么样? (见https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct)