Python 在django中使用sql concat()连接两列

Python 在django中使用sql concat()连接两列,python,mysql,sql,django,Python,Mysql,Sql,Django,假设我在MySQL中有一个表xyz,它有三列:col1、col2和col3(都是varchar)。对于使用此模型的服务器,我正在使用python和Django。现在,我想用Django ORM编写一个表达式,它将在MySQL中生成此查询: SELECT * FROM xyz WHERE col3 != CONCAT(col1, col2) 我知道Django过滤器/排除,但基于固定值而非列的过滤器除外: xyz.objects.exclude(col3='something') 或 (注:我

假设我在MySQL中有一个表xyz,它有三列:col1、col2和col3(都是varchar)。对于使用此模型的服务器,我正在使用python和Django。现在,我想用Django ORM编写一个表达式,它将在MySQL中生成此查询:

SELECT * FROM xyz WHERE col3 != CONCAT(col1, col2)
我知道Django
过滤器
/
排除
,但基于固定值而非列的过滤器除外:

xyz.objects.exclude(col3='something')


(注:我知道如果一列包含来自其他列的冗余信息,那么这是一个糟糕的表设计)

您必须为此使用一些SQL。原始的
raw

xyz.objects.raw("SELECT * FROM xyz WHERE col3 != CONCAT(col1, col2)")
额外

xyz.objects.extra(where=["col3 != CONCAT(col1, col2)"])

为此,您必须使用一些SQL。原始的
raw

xyz.objects.raw("SELECT * FROM xyz WHERE col3 != CONCAT(col1, col2)")
额外

xyz.objects.extra(where=["col3 != CONCAT(col1, col2)"])

Django>=1.8
中,这也是可能的:

from django.db.models.functions import Concat
queryset = xyz.objects.exclude(col3=Concat('col1', 'col2'))

Django>=1.8
中,这也是可能的:

from django.db.models.functions import Concat
queryset = xyz.objects.exclude(col3=Concat('col1', 'col2'))

我不明白你的意思。这两款都是Django的,我不明白你的意思。这两款都是Django车型。谢谢,但我很久以前就搬出了那个项目和公司……:)谢谢,但我很久以前就搬出了那个项目和公司……:)