【发布时间】:2021-07-03 20:37:30
【问题描述】:
假设我有以下模型,它有一个方法 variables():
class Example(models.Model):
text = models.CharField(max_length=255)
def variants(self):
return Example.objects.filter(text=remove('xy', self.text))
这个想法是在从文本中删除某些字符后获取文本相同的所有对象。例如,如果 self.text 是 'axxyy',它应该与具有文本 'a' 的对象匹配。函数 remove() 不涉及数据库,它返回一个已删除给定字符的新字符串。这很好用。
但是,我需要在比较的两边都执行相同的操作,以便 variables() 的行为如下:
def variants(self):
return Example.objects.filter(remove('xy', text)=remove('xy', self.text))
在这种情况下,如果 self.txt 是 'axxyy',它应该与 'a'、'ax、'axx'、'xayy' 等匹配,但不应与 'aa' 匹配,例如,因为 ' a' != 'aa' 删除后。再一次,我不想从数据库中删除“xy”,只是为了比较。
我可以用 Python 做到这一点,但我想知道是否有办法在数据库级别做到这一点?我一直在阅读有关 Func() 表达式的文档,例如 Replace,但尚未找到解决方案。
【问题讨论】:
标签: django postgresql filtering