【Django基础教程】相同表不同列之间的比较

如何实现django models同一个表中,不同列之间的比较

假设我们有这样一个models表:

1
2
3
4
5
6
7
8
class Question(models.Model):
...
# answre 1
l_answer = models.CharField(max_length=10, default='')

# answre 2
r_answer = models.CharField(max_length=10, default='')
...

我们的问题是如何筛选出 l_answer 和 r_answer 相同的记录呢?

这个时候我们要请出django models新的模块 F

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django.db.models import F

class Question(models.Model):
...
# answre 1
l_answer = models.CharField(max_length=10, default='')

# answre 2
r_answer = models.CharField(max_length=10, default='')
...

def get():
return Question.objects.filter(l_answer=models.F('r_answer'))
...

F表达式允许用models内的字段进行比较,F表达式内就是要匹配的字段名

等同于:

1
select * from Question where l_answer=r_answer

这样就可以查询出所有 l_answer 和 r_answer 相同的记录

坚持原创技术分享,谢谢鼓励我继续创作!