Пользовательская кнопка в 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".

Спасибо за ваши усилия!

Вернуться на верх