Python Django筛选器查询集(如果属性存在)

Python Django筛选器查询集(如果属性存在),python,django,django-queryset,Python,Django,Django Queryset,我试图筛选出没有自定义字段的对象 例如: 返回的列表可能具有以下属性 customfield_1: value customfield_2: value_2 customfield_3: value_3 在返回的列表中,并非所有对象都具有customfield_3属性,因此我想过滤掉这些值 像这样做 queryset.exlude(customfield_3=None) 不起作用,因为不是该属性的值为null,而是该属性在对象上根本不存在 生成的列表是从一个表构建的,该表通过链接将服务项映

我试图筛选出没有自定义字段的对象

例如:

返回的列表可能具有以下属性

customfield_1: value
customfield_2: value_2
customfield_3: value_3
在返回的列表中,并非所有对象都具有customfield_3属性,因此我想过滤掉这些值

像这样做

queryset.exlude(customfield_3=None) 
不起作用,因为不是该属性的值为null,而是该属性在对象上根本不存在

生成的列表是从一个表构建的,该表通过链接将服务项映射到一起

Service
Service Type,
ect.

Link
Parent_Service_Id
Child_Service_Id
这让我可以构建一个充当树的列表。我试图排除的字段是当服务类型设置为自定义值时。正常价值观包括史诗、故事等。(这来自Jira),但Jira也可以包括自定义字段


那么,是否可以向查询集添加一个过滤器来检查对象是否存在属性?

首先,您可以检查模型是否有以下字段:

queryset.model._meta.get_field(field)
然后你可以这样做:

from django.db import models

query_fitler = {
    "customfield_1": "value",
    "customfield_2": "value_2",
    "customfield_3": "value_3"
}

for field in query_fitler:
    try:
        queryset.model._meta.get_field(field)
    except models.FieldDoesNotExist:
        # remove field 
        query_fitler.pop(field, None)

# then filter the queryset
queryset.exclude(**query_fitler)

你到底是如何存储属性的,你能提供相关的模型吗?我已经用更多的信息更新了我的问题