Cómo establecer valores iniciales para un ModelForm cuando también se da una instancia

Parece que si a un ModelForm se le da una instancia, ignora los valores que proporcioneinitial y en su lugar lo establece en el valor de la instancia, incluso si esa instancia es un registro de modelo vacío.

¿Hay alguna forma de crear un formulario con una instanciay ¿Ha configurado los datos iniciales?

Lo necesito porque estoy guardando registros relacionados y no parece que se guarden correctamente a menos que se dé una instancia a ModelForm cuando se cree.

Estoy seguro de que la respuesta a esta pregunta es sencilla y me falta algo obvio.

Aquí está el código relevante:

en la vista:
form = form_class(person=person, conference=conference, initial=initial, instance=registration)

donde form_class esRegistrationForm y luego en el formulario de inscripción:

class RegisterForm(forms.ModelForm):
    ... fields here ...

    def __init__(self, *args, **kwargs):
        ... other code ...
        self.person = kwargs.pop('person')
        super(RegisterForm, self).__init__(*args, **kwargs)
        for key, in self.fields.keys():
            if hasattr(self.person, key):
                self.fields[k].initial = getattr(self.person, key)

Luego, cuando llamo al campo, los campos relacionados están vacíos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta