如何在“ OR”语句中通过Django / postgres中的md5哈希搜索

时间:2019-03-24 03:13:53

标签: python django postgresql

我有一个带标题字段的模型:

class Item():
    title = models.TextField(blank=True, null=True)

我的数据库在标题字段上有一个md5索引。我想按哈希的md5字符串进行搜索,例如:

Item.objects.extra(where=["MD5(title) = hashlib.md5("This is the title")"])

但是,我想在OR语句中执行此操作,所以我当前的代码如下:

class ItemManagerQueryset(models.QuerySet):
    def is_matching_title(item):
        q_objects = Q()
        if item.title:
            q_objects.add(Q(title=item.title), Q.OR)
        self.filter(q_objects)

如何在OR语句中添加.extra,如下所示:

class ItemManagerQueryset(models.QuerySet):
    def is_matching_title(item):
        q_objects = Q()
        if item.title:
            q_objects.add(Q(title=item.title), Q.OR)

        q_objects.add(Q(extra(where=["MD5(title) = hashlib.md5("This is the title")"])), Q.OR)          
        self.filter(q_objects)

0 个答案:

没有答案