Skip to main content
 首页 » 编程设计

python之Django,自动构建长查询集

2024年08月29日22傻小

我有一个包含很多字段的模型。我想构建一个查询集,从预定义的字段列表中选择具有空白字段的对象。 (任何字段,不是全部)

说:

fields=['a','b','c','d','e','f','g','h','i','j','k'] 

我会写

model.objects.filter(Q(a==Null) | Q(b==Null) | Q(c==Null) ... 

有没有更好的办法?

请您参考如下方法:

这个怎么样?

qObj = None 
for field in fields: 
    newQ = Q(**{field :  Null}) 
    if qObj is None: 
        qObj = newQ 
    else: 
        qObj = qObj | newQ 

我不喜欢 qObj = None 和后续检查,但在构建 Q 对象时我不知道有什么方法可以绕过它。不过,Q(**{field: Null}) 可能正是您要寻找的一般内容。