На ум приходят две возможности.Вы можете установить атрибут в методе __init__
формы, либо на основе параметра, который вы явно передаете, либо на основании того, существует ли self.instance
и имеет ли он ненулевой pk:
class MyModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
# either:
self.edit = kwargs.pop('edit', False)
# or:
self.edit = hasattr(self, instance) and self.instance.pk is not None
super(MyModelForm, self).__init__(*args, **kwargs)
# now modify self.fields dependent on the value of self.edit
Другойвариант заключается в создании подкласса вашей модели: сохраните совместную функциональность в базовом классе, а затем определенную функциональность создания или обновления в подклассах.