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)
你到底是如何存储属性的,你能提供相关的模型吗?我已经用更多的信息更新了我的问题