                  # maintain compatibility with existing calls, daft as it is.
                  if isinstance(field.rel, ManyToOneRel):
                      kwargs.pop(field.attname, None)
          
          # now we're left with the unprocessed fields that *must* come from keywords, or default.
          
          for field in fields_iter:
              if kwargs:
                  if isinstance(field.rel, ManyToOneRel):
                      try:
 
</s> remove                 # maintain compatibility with existing calls, daft as it is.
 </s> add                 # Maintain compatibility with existing calls. </s> remove             # slower...
 </s> add             # Slower, kwargs-ready version. </s> remove             # daft, but matches old exception sans the err msg.
            raise IndexError("number of args exceeds number of fields")
 </s> add             # Daft, but matches old exception sans the err msg.
            raise IndexError("Number of args exceeds number of fields") </s> remove         # there is a rather weird disparity here; if kwargs, it's set, then args overrides it.
        # should be one or the other, don't duplicate the work
        # the reason for the kwargs check is that standard iterator passes in by args, literally,
        # the row- with this check, instantiation for iteration is 33% faster.
 </s> add         
        # There is a rather weird disparity here; if kwargs, it's set, then args
        # overrides it. It should be one or the other; don't duplicate the work 
        # The reason for the kwargs check is that standard iterator passes in by
        # args, and nstantiation for iteration is 33% faster. </s> remove             # ordering of the izip calls matter- izip throws StopIteration when an iter throws it
            # meaning, if the first iter throws it, the second is *not* consumed from
            # we rely on this, thus don't change the order without changing the logic.
 </s> add             # The ordering of the izip calls matter - izip throws StopIteration
            # when an iter throws it. So if the first iter throws it, the second
            # is *not* consumed. We rely on this, so don't change the order
            # without changing the logic.
        # Now we're left with the unprocessed fields that *must* come from
        # keywords, or default.
                  # maintain compatibility with existing calls, daft as it is.
                  if isinstance(field.rel, ManyToOneRel):
                      kwargs.pop(field.attname, None)
          
        # Now we're left with the unprocessed fields that *must* come from
        # keywords, or default.
          
          for field in fields_iter:
              if kwargs:
                  if isinstance(field.rel, ManyToOneRel):
                      try:
keep keep keep keep replace keep keep keep keep keep
 Cleaned up comments from [4597] to be a bit more clear.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@4598 bcc190cf-cafb-0310-a4f2-bffc1f526a37 
django/db/models/base.py