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

标签 python django django-models django-orm

我有两个与外键相关的模型ClientsclientData。我想选择所有不在 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/

相关文章:

Django:将任意附加数据添加到查询集中

python - 无法发送另一个线程中对象的已发布事件

python - 如何将 django 的 TemporaryUploadedFile 视为常规 python 文件

python - 索引错误: tuple index out of range when comparing lists

python - 模块未找到错误 : No module named 'application' [Deploying Django to AWS]

python - 属性错误: module 'django.db.models' has no attribute 'ManyToMany'

python - 在大矩阵中找到满足特定条件的元素的所有索引给出 MemoryError

python - 获取服务器响应 (400) : Invalid classifier "Framework::Django::1.10" from Pypi

python - Django Selenium 单击 ajax 模式弹出窗口上的按钮

python - Django 1.2 + South 0.7 + django-annoying 的 AutoOneToOneField 导致 TypeError : 'LegacyConnection' object is not iterable