посмотри вот тут:
UpdateViewCreateView
Посмотри на различия для Create и Update View, а именно на self.get_object() и self.get_form_kwargs().
Функция get_form_kwargs возвращает словарь с ключами 'initial', 'instance', 'data', 'files', и 'instance' определяется в ModelFormMixin (а в твоем случае ты его не используешь). Когда в get_form_kwargs значение 'instance' объект модели - форма обновляет объект, когда None - создает новый.
Дополнение:
Да, в ModelFormMixin instance уже передается в форму из self.object. Откройте
ModelFormMixin и разверните "def get_form_kwargs(self):" и то что в нем. ModelFormMixin наследует FormMixin, в переопределенном методе get_form_kwargs вызывает super(), а в полученный словарь дописывает instance:
def get_form_kwargs(self):
"""
Returns the keyword arguments for instantiating the form.
"""
kwargs = super(ModelFormMixin, self).get_form_kwargs()
if hasattr(self, 'object'):
kwargs.update({'instance': self.object})
return kwargs