比较同一张表中的两行

时间:2019-11-13 08:20:39

标签: django python-3.x django-models

我在同一张表中有两行,我想为这些行获取具有不同值的列名。

我知道我可以通过一个简单的for循环(如下面的示例)来实现此目的,但是django也许已经有一种方法可以完成此任务。

class MyModel(models.Model):
    name = models.CharField(max_length=30)
    email = models.EmailField()
#---
a = MyModel(name='A', email='a@z.com')
a.save()
b = MyModel(name='B', email='b@z.com')
b.save()
#---
recA = MyModel.object.get(pk=1)
recB = MyModel.object.get(pk=2)
#---
diff = []
colNames = [
    'email', 
    'name', 
]
for a in colNames:
    if getattr(recA, a) == getattr(recB, a):
        pass
    else:
        diff.append(a)

1 个答案:

答案 0 :(得分:0)

如果您希望具有至少一列的行具有不同的值,则可以这样查询:

result = MyModel.objects.filter(pk__in=[1,2]).distinct().values('email','name')

distinct()将消除查询结果中的重复行。