Ответ 1
В представлении обновления будет form.instance
, а form.instance.pk
не будет None. В представлении создания может быть или не быть form.instance
, но даже если есть form.instance.pk
, будет None.
Если 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?
В представлении обновления будет form.instance
, а form.instance.pk
не будет None. В представлении создания может быть или не быть form.instance
, но даже если есть form.instance.pk
, будет None.
объект
При использовании CreateView у вас есть доступ к self.object, который является создаваемым объектом. Если объект еще не создан, значение будет None.
объект
При использовании UpdateView у вас есть доступ к self.object, который является обновляемым объектом.
{% if object %}
<input type="submit" value="Update Author" />
{% else %}
<input type="submit" value="Add Author" />
{% endif %}