#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 ?