Within a template distinguish between create and update form

In an update view, there'll be a form.instance, and form.instance.pk will not be None. In a create view, there may or may not be form.instance, but even if there is form.instance.pk will be None.


add this function in your both CreateView and UpdateView class:

# For Create
def get_context_data(self, **kwargs):
        kwargs['naming'] = 'Create'
        context = super(CLASSNAME, self).get_context_data(**kwargs)
        return context

# For Update
def get_context_data(self, **kwargs):
        kwargs['naming'] = 'Update'
        context = super(CLASSNAME, self).get_context_data(**kwargs)
        return context

then reference those in your template with {{ naming }}

example

<button type="submit">{{ naming }}</button>

From docs:

CreateView

object

When using CreateView you have access to self.object, which is the object being created. If the object hasn’t been created yet, the value will be None.

 

UpdateView

object

When using UpdateView you have access to self.object, which is the object being updated.

Solution:

{% if object %}
    <input type="submit" value="Update Author" />
{% else %}
    <input type="submit" value="Add Author" />
{% endif %}

Tags:

Django