Django 比较同一表中的两行

Django 比较同一表中的两行,django,python-3.x,django-models,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 = My

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

我知道我可以通过一个简单的
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)

如果希望至少有一列的行具有不同的值,可以按如下方式进行查询:

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

将从查询结果中删除重复的行。

您能分享一些您想要比较的代码吗?@ruddra。添加示例。这不会告诉我电子邮件和/或名称的值在两行中是否不同。如果结果不是空的,我只知道至少有一列是不同的,但我不知道是哪一列。然后,您可以在values()之后链接distinct()函数,如下所示:result=MyModel.objects.filter(pk_uin=[1,2])。values('email','name')。distinct()Nope。这将返回MyModel.id=2的整行