mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Undo [7474]. I didn't think it through nearly carefully enough.
This means that all model construction now goes through the __init__() method again. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7504 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -237,32 +237,6 @@ class Model(object): | |||||||
|                 raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0] |                 raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0] | ||||||
|         dispatcher.send(signal=signals.post_init, sender=self.__class__, instance=self) |         dispatcher.send(signal=signals.post_init, sender=self.__class__, instance=self) | ||||||
|  |  | ||||||
|     def from_sequence(cls, values): |  | ||||||
|         """ |  | ||||||
|         An alternate class constructor, primarily for internal use. |  | ||||||
|  |  | ||||||
|         Creates a model instance from a sequence of values (which corresponds |  | ||||||
|         to all the non-many-to-many fields in creation order. If there are more |  | ||||||
|         fields than values, the remaining (final) fields are given their |  | ||||||
|         default values. |  | ||||||
|  |  | ||||||
|         ForeignKey fields can only be initialised using id values, not |  | ||||||
|         instances, in this method. |  | ||||||
|         """ |  | ||||||
|         dispatcher.send(signal=signals.pre_init, sender=cls, args=values, |  | ||||||
|                 kwargs={}) |  | ||||||
|         obj = Empty() |  | ||||||
|         obj.__class__ = cls |  | ||||||
|         field_iter = iter(obj._meta.fields) |  | ||||||
|         for val, field in izip(values, field_iter): |  | ||||||
|             setattr(obj, field.attname, val) |  | ||||||
|         for field in field_iter: |  | ||||||
|             setattr(obj, field.attname, field.get_default()) |  | ||||||
|         dispatcher.send(signal=signals.post_init, sender=cls, instance=obj) |  | ||||||
|         return obj |  | ||||||
|  |  | ||||||
|     from_sequence = classmethod(from_sequence) |  | ||||||
|  |  | ||||||
|     def __repr__(self): |     def __repr__(self): | ||||||
|         return smart_str(u'<%s: %s>' % (self.__class__.__name__, unicode(self))) |         return smart_str(u'<%s: %s>' % (self.__class__.__name__, unicode(self))) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -164,7 +164,7 @@ class QuerySet(object): | |||||||
|                 obj, _ = get_cached_row(self.model, row, index_start, |                 obj, _ = get_cached_row(self.model, row, index_start, | ||||||
|                         max_depth, requested=requested) |                         max_depth, requested=requested) | ||||||
|             else: |             else: | ||||||
|                 obj = self.model.from_sequence(row[index_start:]) |                 obj = self.model(*row[index_start:]) | ||||||
|             for i, k in enumerate(extra_select): |             for i, k in enumerate(extra_select): | ||||||
|                 setattr(obj, k, row[i]) |                 setattr(obj, k, row[i]) | ||||||
|             yield obj |             yield obj | ||||||
| @@ -655,7 +655,7 @@ def get_cached_row(klass, row, index_start, max_depth=0, cur_depth=0, | |||||||
|  |  | ||||||
|     restricted = requested is not None |     restricted = requested is not None | ||||||
|     index_end = index_start + len(klass._meta.fields) |     index_end = index_start + len(klass._meta.fields) | ||||||
|     obj = klass.from_sequence(row[index_start:index_end]) |     obj = klass(*row[index_start:index_end]) | ||||||
|     for f in klass._meta.fields: |     for f in klass._meta.fields: | ||||||
|         if (not f.rel or (not restricted and f.null) or |         if (not f.rel or (not restricted and f.null) or | ||||||
|                 (restricted and f.name not in requested) or f.rel.parent_link): |                 (restricted and f.name not in requested) or f.rel.parent_link): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user