我有两个与外键相关的模型Clients和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 之外,我不这样做不知道如何得到它。
最佳答案
要选择 clientData 中不存在的客户端,我们可以获取 clientData 记录中的客户端列表,然后运行排除以将其过滤掉。
included_clients = clientData.objects.values_list('client', flat=True)
excluded_clients = Client.objects.exclude(id__in=included_clients)
关于python - 根据某些条件从模型中过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445766/