Ticket #2363: tighter_subclasscheck.2.patch
File tighter_subclasscheck.2.patch, 1.8 KB (added by , 18 years ago) |
---|
-
tests/modeltests/invalid_models/models.py
97 97 m2m_3 = models.ManyToManyField('self', symmetrical=False) 98 98 m2m_4 = models.ManyToManyField('self', symmetrical=False) 99 99 100 class Model(models.Model): 101 "But it's valid to call a model Model." 102 year = models.PositiveIntegerField() #1960 103 make = models.CharField(maxlength=10) #Aston Martin 104 name = models.CharField(maxlength=10) #DB 4 GT 105 106 class Car(models.Model): 107 colour = models.CharField(maxlength=5) 108 model = models.ForeignKey(Model) 109 100 110 model_errors = """invalid_models.fielderrors: "charfield": CharFields require a "maxlength" attribute. 101 111 invalid_models.fielderrors: "floatfield": FloatFields require a "decimal_places" attribute. 102 112 invalid_models.fielderrors: "floatfield": FloatFields require a "max_digits" attribute. -
django/db/models/base.py
22 22 "Metaclass for all models" 23 23 def __new__(cls, name, bases, attrs): 24 24 # If this isn't a subclass of Model, don't do anything special. 25 if name == 'Model' or not filter(lambda b: issubclass(b, Model), bases): 25 try: 26 if not filter(lambda b: issubclass(b, Model), bases): 27 return super(ModelBase, cls).__new__(cls, name, bases, attrs) 28 except NameError: 29 # Model isn't defined yet, meaning we're looking at django's own Model defined below 26 30 return super(ModelBase, cls).__new__(cls, name, bases, attrs) 27 31 28 32 # Create the class.