Django

Code

Ticket #6214: optimized.models.base.diff

File optimized.models.base.diff, 1.1 kB (added by i_i, 1 year ago)

small optimization of previous patch

  • base.py

    old new  
    2424    def __new__(cls, name, bases, attrs): 
    2525        # If this isn't a subclass of Model, don't do anything special. 
    2626        try: 
    27             if not filter(lambda b: issubclass(b, Model), bases): 
     27            parents = filter(lambda b: issubclass(b, Model), bases) 
     28            if not parents: 
    2829                return super(ModelBase, cls).__new__(cls, name, bases, attrs) 
    2930        except NameError: 
    3031            # 'Model' isn't defined yet, meaning we're looking at Django's own 
     
    3940            types.ClassType('MultipleObjectsReturned', (MultipleObjectsReturned, ), {})) 
    4041 
    4142        # Build complete list of parents 
    42         for base in bases: 
    43             # TODO: Checking for the presence of '_meta' is hackish. 
    44             if '_meta' in dir(base): 
     43        for base in parents: 
     44            if base is not Model: 
    4545                new_class._meta.parents.append(base) 
    4646                new_class._meta.parents.extend(base._meta.parents) 
    4747