Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较对象字段与Django的ORM_Python_Django_Django Orm - Fatal编程技术网

Python 比较对象字段与Django的ORM

Python 比较对象字段与Django的ORM,python,django,django-orm,Python,Django,Django Orm,Django的ORM是否支持使用小于/大于运算符比较不同表中的列 例如,我试图比较Django查询中的两个对象字段,这两个字段的SQL等价物为: SELECT a.id FROM mytable a LEFT OUTER JOIN myothertable b ON b.id = a.other_id AND a.val < b.someval 洛特的答案是正确的。下面是一个使用F的示例: class ModelA(models.Model): val = IntegerFiel

Django的ORM是否支持使用小于/大于运算符比较不同表中的列

例如,我试图比较Django查询中的两个对象字段,这两个字段的SQL等价物为:

SELECT a.id
FROM mytable a
LEFT OUTER JOIN myothertable b ON b.id = a.other_id AND a.val < b.someval

洛特的答案是正确的。下面是一个使用F的示例:

class ModelA(models.Model):
    val = IntegerField()
    model_b = ForeignKey('ModelB')

class ModelB(models.Model):
    val = IntegerField()


>>> from django.db.models import F
>>> ModelA.objects.filter(val__lt=F('model_b__val'))
>>> print qs.query
SELECT `test_modela`.`id`, `test_modela`.`val`, `test_modela`.`model_b_id` FROM `test_modela` INNER JOIN `test_modelb` ON (`test_modela`.`model_b_id` = `test_modelb`.`id`) WHERE `test_modela`.`val` <  `test_modelb`.`val`
>>> 

洛特的答案是正确的。下面是一个使用F的示例:

class ModelA(models.Model):
    val = IntegerField()
    model_b = ForeignKey('ModelB')

class ModelB(models.Model):
    val = IntegerField()


>>> from django.db.models import F
>>> ModelA.objects.filter(val__lt=F('model_b__val'))
>>> print qs.query
SELECT `test_modela`.`id`, `test_modela`.`val`, `test_modela`.`model_b_id` FROM `test_modela` INNER JOIN `test_modelb` ON (`test_modela`.`model_b_id` = `test_modelb`.`id`) WHERE `test_modela`.`val` <  `test_modelb`.`val`
>>> 

你读过这个了吗?它的工作原理似乎很清楚。这有什么让人困惑的?你读过了吗?它的工作原理似乎很清楚。有什么让人困惑的?这不是答案。这是个问题,不是答案。这是一个问题。