Python 如何比较django中两个不同表的特定值?
我有两张“联系人”表,另一张是“订户”表。。我想比较两者的联系人id,只想显示联系人中存在但订户中不存在的联系人id。这两个表有两种不同的型号。类似的功能应该可以:Python 如何比较django中两个不同表的特定值?,python,django,django-models,Python,Django,Django Models,我有两张“联系人”表,另一张是“订户”表。。我想比较两者的联系人id,只想显示联系人中存在但订户中不存在的联系人id。这两个表有两种不同的型号。类似的功能应该可以: Contact.objects.exclude( id__in=Subscriber.objects.all() ).values_list('id', flat=True) 请注意,这实际上是两个SQL查询。我相信有很多方法可以优化它,但这通常会很好 另外,values\u list与选择对象无关,它只是修改返回内容的“
Contact.objects.exclude(
id__in=Subscriber.objects.all()
).values_list('id', flat=True)
请注意,这实际上是两个SQL查询。我相信有很多方法可以优化它,但这通常会很好
另外,values\u list
与选择对象无关,它只是修改返回内容的“格式”(ID列表而不是对象查询集,但在这两种情况下都是相同的数据库记录)
如果您通过某个字段排除,而不是Subscriber.id
(例如:Subscriber.quasy\u id
):
编辑:
此答案假设您的联系人
和订户
型号之间没有关系。如果你这样做了,那么看看@navit的答案,这是一个更好的选择
编辑2:
实际上不需要
flat=True
内部exclude
。我假设您的模型是这样的:
class Subscriber(models.Model):
contact = models.ForeignKey(Contact)
my_list = Subscriber.objects.filter(contact=None)
您可以这样做:
class Subscriber(models.Model):
contact = models.ForeignKey(Contact)
my_list = Subscriber.objects.filter(contact=None)
这将检索没有联系人的订阅者。检索联系人列表很简单。如果要比较两个不同表(与ForeignKey有连接)中字段的值,可以使用以下方法:
class Subscriber(models.Model):
contact = models.ForeignKey(Contact)
my_list = Subscriber.objects.filter(contact=None)
我假设模型如下所示:
class Contact(models.Model):
name = models.TextField()
family = models.TextField()
class Subscriber(models.Model):
subscriber_name = models.ForeignKey(Contact, on_delete=models.CASCADE)
subscriber_family = models.TextField()
这将是一个问题:
query = Subscriber.objects.filter(subscriber_name =F(Contact__name))
return query
是的,联系人和订户之间没有关系