Ok, now I am really confused.
      # Handle FK fields
      elif field.rel and isinstance(field.rel, models.ManyToOneRel):
        if field_value is not None:
          import pdb; pdb.set_trace()
          if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):
            if hasattr(field_value, '__iter__'):
              obj = field.rel.to._default_manager.db_manager(db).get_by_natural_key(*field_value)
              value = getattr(obj, field.rel.field_name)
              # If this is a natural foreign key to an object that
              # has a FK/O2O as the foreign key, use the FK value
              if field.rel.to._meta.pk.rel:
                value =
value.pk            else:
              value = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)
            data[field.attname] = value
          else:
            data[field.attname] = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)
        else:
          data[field.attname] = None
<django.db.models.fields.related.ForeignKey: event_type>
(Pdb) p hasattr(field.rel.to._default_manager, 'get_by_natural_key')
> /home/bob/.virtualenvs/vn2/lib/python2.6/site-packages/django/core/serializers/python.py(109)Deserializer()
-> if hasattr(field_value, '__iter__'):
(Pdb) p hasattr(field_value, '__iter__')
(Pdb) p type(field_value)
> /home/bob/.virtualenvs/vn2/lib/python2.6/site-packages/django/core/serializers/python.py(117)Deserializer()
-> value = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)
ValidationError: Validati...teger."])
> /home/bob/.virtualenvs/vn2/lib/python2.6/site-packages/django/core/serializers/python.py(117)Deserializer()
-> value = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)