Django

Code

Ticket #7076: 7076.1.diff

File 7076.1.diff, 1.6 kB (added by emulbreh, 7 months ago)
  • django/db/models/sql/query.py

    old new  
    10251025                self.promote_alias(table) 
    10261026 
    10271027        self.where.add((alias, col, field, lookup_type, value), connector) 
     1028 
    10281029        if negate: 
    10291030            for alias in join_list: 
    10301031                self.promote_alias(alias) 
    1031             if final > 1 and lookup_type != 'isnull': 
    1032                 for alias in join_list: 
    1033                     if self.alias_map[alias] == self.LOUTER: 
    1034                         j_col = self.alias_map[alias][RHS_JOIN_COL] 
    1035                         entry = Node([(alias, j_col, None, 'isnull', True)]) 
    1036                         entry.negate() 
    1037                         self.where.add(entry, AND) 
    1038                         break 
     1032            if lookup_type != 'isnull': 
     1033                if final > 1: 
     1034                    for alias in join_list: 
     1035                        if self.alias_map[alias][JOIN_TYPE] == self.LOUTER: 
     1036                            j_col = self.alias_map[alias][RHS_JOIN_COL] 
     1037                            entry = Node([(alias, j_col, None, 'isnull', True)]) 
     1038                            entry.negate() 
     1039                            self.where.add(entry, AND) 
     1040                            break 
     1041                else: 
     1042                    entry = Node([(alias, col, field, 'isnull', True)]) 
     1043                    entry.negate() 
     1044                    self.where.add(entry, AND) 
     1045                 
     1046                     
    10391047        if can_reuse is not None: 
    10401048            can_reuse.update(join_list) 
    10411049