根据某些条件从模型中过滤数据

时间:2013-10-18 09:09:43

标签: python django django-models django-orm

我有两个与外键相关的模型客户端 clientData 。我想选择那些不在clientData模型中的客户端。模型的结构如下:

class Client(Model):
    name = CharField(max_length=NAME_FIELD_LENGTH)
    nickname = CharField(max_length=NAME_FIELD_LENGTH, null=True, blank=True, db_index=True)


class clientData(Model):
    art = ForeignKey(Art)
    client =  ForeignKey(Client)
    pj = ForeignKey(Pj, null=True, blank=True)

如果我运行此查询

val = Client.objects.filter(clientswiki__client = 1)

它返回id为1的客户端的值,它应该是但我想要的是如果clientData只有一个条目是客户端ID 1那么它将返回来自客户端模型的所有其他条目期望id 1并且我不要该怎么做。

1 个答案:

答案 0 :(得分:2)

要选择clientData中不存在的客户端,我们可以获取clientData记录中的客户端列表,然后运行排除以过滤掉它们。

included_clients = clientData.objects.values_list('client', flat=True)

excluded_clients = Client.objects.exclude(id__in=included_clients)