我有两个与外键有关的模型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的client的值,但应该是,但我想要的是,如果clientData只有一个条目是client id 1,那么它将返回Client模型中的所有其他条目,期望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/

10-12 04:49