В шаблоне различают форму создания и обновления

Если CreateView и UpdateView используют один и тот же шаблон "model_form.html", то внутри шаблона, как бы я отличался, если я создаю или обновляю форму?

Мой общий вид выглядит следующим образом

class AuthorCreateView(CreateView):
    form_class = AuthorForm
    model = Author


class AuthorUpdateView(UpdateView):
    form_class = AuthorForm
    model = Author

AuthorForm выглядит следующим образом

class AuthorForm(ModelForm):
    class Meta:
        model = Author
        fields = ('first_name', 'last_name')

Мой шаблон выглядит следующим образом

<form action="" method="post">
            {% csrf_token %}
            <table border="0" cellpadding="4" cellspacing="0">
                <tr>
                    <td>First Name</td>
                    <td>{{ form.first_name.errors }}{{ form.first_name }}</td>
                </tr>
                <tr>
                    <td>Last Name</td>
                    <td>{{ form.last_name.errors }} {{ form.last_name }}</td>
                </tr>
            </table>
            {% if form.isNew %}
                <input type="submit" value="Update Author" />
            {% else %}
                <input type="submit" value="Add Author" />
            {% endif %}
        </form>

В моем шаблоне я хотел бы различать представление create и update?

Ответ 1

В представлении обновления будет form.instance, а form.instance.pk не будет None. В представлении создания может быть или не быть form.instance, но даже если есть form.instance.pk, будет None.

Ответ 2

Из документов:

CreateView

объект

При использовании CreateView у вас есть доступ к self.object, который является создаваемым объектом. Если объект еще не создан, значение будет None.

 

UpdateView

объект

При использовании UpdateView у вас есть доступ к self.object, который является обновляемым объектом.

Решение:

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