选择/ django-autocomplete-light -相同的对象在结果集中多次显示



我使用django-autocomplete-light,我希望用户能够在自动完成字段中使用项目编号、项目负责人或项目标题来搜索项目。

只要我添加第三行"| Q",我就会在结果列表中多次获得相同的对象。我从名字和项目ID开始-在那里我可以通过添加"if isdigit()"来解决问题。但是现在我想在项目标题中添加额外的搜索。同样,添加带有"| Q"选项的第三行会导致某些项在结果集中出现多次(3-5次)。

有什么想法吗?我能解决这个问题吗或者至少能减少结果集只显示每个对象一次?

谢谢!:)

class SearchProjectAutocomplete(autocomplete.Select2QuerySetView):
    #todo: bug that show results 4-5 times when searched in titel
    def get_queryset(self):
        qs = PubmaPublikation.objects.filter(typid__in=[222,223,224]).filter(zeigen=1)
        qs = qs.order_by('-erstellungsdatum')
        qs = qs.prefetch_related('pubmapublikationperson_set__person')
        qs = qs.prefetch_related('pubmapublikationsprache_set')
        if self.q:
            if self.q.isdigit():
                qs = qs.filter(Q(projektnummer__contains=self.q))
            else:
                qs = qs.filter(
                    (Q(pubmapublikationperson__rolle=1) & Q(pubmapublikationperson__person__vorname__icontains=self.q))
                    | (Q(pubmapublikationperson__rolle=1) & Q(pubmapublikationperson__person__nachname__icontains=self.q))
                    | (Q(pubmapublikationsprache__order=1) & Q(pubmapublikationsprache__titel__icontains=self.q)) #as soon as I add this third line I get results multiple times
                )
        #qs = qs.distinct()
            #does not work
            # django.db.utils.DatabaseError: ORA-00932: inconsistent datatypes: expected - got CLOB

        return qs

我尝试了distinct()对查询集,但我确实得到以下DB错误:

django.db.utils.DatabaseError: ORA-00932: inconsistent datatypes: expected - got CLOB 

似乎来自其中一个字段。如何确保distinct仅用于oracle DB中的pk ?

这是因为同一行再次连接,使用Django distinct()

最新更新