Почему Django не отображает все атрибуты объекта?

#django #django-models #django-templates

#django #django-модели #django-шаблоны

Вопрос:

У меня проблема в том, что у меня есть модель с двумя полями, но на выходе отображается только одно.

У меня есть этот код в моем views.py

 class Update_Org(UpdateView):
    model = OrgKlass
    form_class = form_update_org
    template_name = templ_folder_name   'update_org.html'
    success_url = reverse_lazy(url_app_name   'list_org')

    def get_object(self, queryset=None):
        self.queryset = OrgKlass.objects.get(id = self.to_update)
        return self.queryset

    def post(self, request, pk):
        if self.request.POST.get('action', False) == 'update':
            self.to_update = pk
            self.object = self.get_object()
            print(self.object.ok_beschreibung)
            return super(Update_Org, self).post(request, pk)
        else:
            pass # because I do not need that right now
  

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

 class form_update_org(forms.ModelForm):
    ok_bezeichnung = forms.CharField(required=True, label="Org-Bezeichnung", widget=forms.TextInput(attrs={'class':'form-control',}))
    ok_beschreibung = forms.CharField(required=False, label="Beschreibung des Tätigkeitsfeldes des Bereichs", widget=forms.Textarea(attrs={'class':'form-control',}))

    class Meta:
        model = OrgKlass
        fields = ('ok_bezeichnung', 'ok_beschreibung')
  

И это часть шаблона html:

 {% block content %}
    {% for label, value in object.get_fields %}
    label: {{label}}<br>
    value: {{value}}<br>
    {% endfor %}                                                
{% endblock %}
  

Однако результат выглядит следующим образом:

 label: ID
value: 9
label: Org-Bezeichnung
value: Company A
label: Beschreibung des Tätigkeitsfeldes
value: 
  

Однако, если вы посмотрите на инструкцию print в части def post, то это правильно выводит значение поля ok_beschreibung.

Есть ли у вас какие-либо идеи, в чем проблема с выводом html? Я думаю, это всего лишь небольшая деталь, которую я здесь упускаю.

PS: Здесь также models.py

 class OrgKlass(models.Model):
    ok_bezeichnung = models.CharField(max_length=255, null=False, blank=False, verbose_name="Org-Bezeichnung")
    ok_beschreibung = models.CharField(max_length=255, null=True, blank=True, verbose_name="Beschreibung des Tätigkeitsfeldes")

    def __str__(self):
        return self.ok_bezeichnung
   
    def get_fields(self):
        return [(field.verbose_name, field.value_from_object(self)) for field in self.__class__._meta.fields]

    class Meta:
        app_label = 'OrgAna'
  

Комментарии:

1. Он показывает второе поле, но значение пустое .

2. Но он не пуст в базе данных. И оператор печати из def post возвращает правильный вывод в оболочку.

3. в этот момент объект еще не обновлен. Это делается в остальной части post метода.

4. Не могли бы вы быть так добры и объяснить это мне? У меня все еще возникают трудности с пониманием оператора super. Является ли строка возврата super(Update_Org, self).post(request, pk) изменением self.object.ok_beschreibung ?