【问题标题】:why my form labels donesnt work with UpdateView?为什么我的表单标签无法与 UpdateView 一起使用?
【发布时间】:2021-06-28 17:14:12
【问题描述】:

django 标签不适用于 UpdateView,但来自另一个模型和视图的标签可以完美运行。

forms.py

    class Meta:
        model = Vacancy
        fields = "__all__"
        labels = {
                  'title': 'Название',
                  'skills': 'Требования',
                  'description': 'Описание',
                  'salary_min': 'Зарплата от',
                  'salary_max': 'Зарплата до',
                  }

views.py

class VacancyEdit(UpdateView):
    model = Vacancy
    template_name = 'vacancies/vacancy-edit.html'
    fields = ['title', 'skills', 'description', 'salary_min', 'salary_max']
    pk_url_kwarg = 'vacancy_id'
    success_url = '/'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['Applications'] = Application.objects.filter(vacancy_id=self.kwargs['vacancy_id'])
        return context

【问题讨论】:

    标签: django django-models django-views django-forms django-templates


    【解决方案1】:

    你没有使用你的表单,你让 Django 基于modelfields 构造一个ModelForm。您因此定义了一个表单,但您从未使用该表单。 UpdateView 使用了它自己构建的一个。

    您可以使用form_class=… [Django-doc] 属性指定表单:

    class VacancyEdit(UpdateView):
        model = Vacancy
        form_class = VacancyForm
        template_name = 'vacancies/vacancy-edit.html'
        pk_url_kwarg = 'vacancy_id'
        success_url = '/'
    
        def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            context['Applications'] = Application.objects.filter(vacancy_id=self.kwargs['vacancy_id'])
            return context

    其中VacancyForm 是您在forms.py 中定义的形式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-28
      • 2016-07-06
      • 2017-12-03
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多