Alright so the `AttributeError` is when `value` is `None`, wouldn't it be better to handle `None` directly? I'd say it would have the merit of being explicit, some feel strongly about "asking forgiveness" rather than "asking permission" but here the "forgiveness" is rather indirect.
```python
    if value is None:
        val = None
    else:
        val = getattr(value, rh_field.attname)
        if val is None:
            raise ValueError("The '%s' instance isn\'t saved in the database." %
                (self.field.rel.to._meta.object_name))
    setattr(instance, lh_field.attname, val)
```