Django 查询集模型在字段中应用函数
Django queryset model apply function in field
可以在 Django 模型中使用 where 子句中字段中的函数模拟此查询 SQL。
我的查询SQL
SELECT id, name, email
FROM students where md5(cast(id as text)) = 'e4da3b7fbbce2345d7772b0674a318d5';
我的 Django 模型。
class Students(models.Model):
name = models.CharField(max_length=50)
email = models
Django 中的方法 - where_filter
的值是值字段 id
/pk
.
的 MD5
where_filter = 'e4da3b7fbbce2345d7772b0674a318d5'
Students.objects.get(pk=where_filter)
Students.objects.filter(pk=where_filter)
谢谢。
您可以使用自定义 Transform class。
类似于:
class Md5Value(Transform):
lookup_name = 'md5'
output_field = CharField()
def as_sql(self, compiler, connectino):
lhs, params = compiler.compile(self.lhs)
return "MD5(cast(%s as text))" % lhs, params
AutoField.register_lookup(MD5Value)
现在您可以:
where_filter = 'e4da3b7fbbce2345d7772b0674a318d5'
Students.objects.get(pk__md5=where_filter)
可以在 Django 模型中使用 where 子句中字段中的函数模拟此查询 SQL。
我的查询SQL
SELECT id, name, email
FROM students where md5(cast(id as text)) = 'e4da3b7fbbce2345d7772b0674a318d5';
我的 Django 模型。
class Students(models.Model):
name = models.CharField(max_length=50)
email = models
Django 中的方法 - where_filter
的值是值字段 id
/pk
.
where_filter = 'e4da3b7fbbce2345d7772b0674a318d5'
Students.objects.get(pk=where_filter)
Students.objects.filter(pk=where_filter)
谢谢。
您可以使用自定义 Transform class。
类似于:
class Md5Value(Transform):
lookup_name = 'md5'
output_field = CharField()
def as_sql(self, compiler, connectino):
lhs, params = compiler.compile(self.lhs)
return "MD5(cast(%s as text))" % lhs, params
AutoField.register_lookup(MD5Value)
现在您可以:
where_filter = 'e4da3b7fbbce2345d7772b0674a318d5'
Students.objects.get(pk__md5=where_filter)