Пользовательская кнопка в UpdateView на основе класса django
Проблема: Мой UpdateView выглядит так же, как и CreateView. Я хочу изменить кнопку отправки с "Check" на "Update".
Вот мои представления в файле views.py:
class CapsUnifCreateView(CreateView):
template_name = 'capsules/uniformity_form.html'
model = models.Uniformity
fields = (
'caps_name',
'mass_1_caps_empty',
'mass_20_caps_full',
'mass_max1',
'mass_min1',
)
class CapsUnifUpdateView(UpdateView):
fields = (
'caps_name',
'mass_1_caps_empty',
'mass_20_caps_full',
'mass_max1',
'mass_min1',
)
model = models.Uniformity
Обратите внимание, что я не использую отдельный шаблон для UpdateView.
Что-то вроде
{% if CreateView %} Check {% else %} Update {% endif %}
в html-файле было бы неплохо, но я не знаю, как это реализовать.
Заранее спасибо!
Используйте получение контекстных данных в представлении
class CapsUnifCreateView(CreateView):
template_name = 'capsules/uniformity_form.html'
model = models.Uniformity
fields = (
'caps_name',
'mass_1_caps_empty',
'mass_20_caps_full',
'mass_max1',
'mass_min1',
)
def get_context_data(self, **kwargs):
context = super(CapsUnifCreateView, self).get_context_data(**kwargs)
context['is_update'] = False
return context
class CapsUnifUpdateView(UpdateView):
fields = (
'caps_name',
'mass_1_caps_empty',
'mass_20_caps_full',
'mass_max1',
'mass_min1',
)
model = models.Uniformity
def get_context_data(self, **kwargs):
context = super(CapsUnifUpdateView, self).get_context_data(**kwargs)
context['is_update'] = True
return context
Проверьте свой шаблон
{% if is_update %} Update {% else %} Create {% endif %}
Нашел! В ModelName_form.html (html файл, который связан с CreateView):
{% if not form.instance.pk %}
<input type="submit" class="btn btn-primary" value="Check">
{% else %}
<input type="submit" class="btn btn-primary" value="Update">
{% endif %}
Это означает, что если в контексте нет первичного ключа (во время CreateView), то отображается "Check", а если есть первичный ключ (во время UpdateView), то отображается "Update".
Спасибо за ваши усилия!