Python Django-表单值错误[简单?]

Python Django-表单值错误[简单?],python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我将提供这一问题所需的所有细节 发行说明: 我使用Django表单存储一些输入字段(即FormPredmet) 之后,我将表单保存在名为>Predmet 在提取数据时,我遇到了一个与ModelForm 打印或显示(在页面上)Predmet.predavacIme对象时,我得到: 相反,我只希望这些中的每一个都有一个值: 所需输出:Elvir,Elvir,Dzenan,Petko 总结: 我使用FormPreMet(forms.Form)获取数据,我认为这就是问题所在 然后将数据保存到模型

我将提供这一问题所需的所有细节

发行说明:

  • 我使用Django表单存储一些输入字段(即
    FormPredmet
  • 之后,我将表单保存在名为>
    Predmet
  • 在提取数据时,我遇到了一个与ModelForm
  • 打印或显示(在页面上)Predmet.predavacIme对象时,我得到:

相反,我只希望这些中的每一个都有一个值:

所需输出:
Elvir
Elvir
Dzenan
Petko

总结:

  • 我使用FormPreMet(forms.Form)获取数据,我认为这就是问题所在
  • 然后将数据保存到模型PreMet
  • 我尝试获取任何对象,例如:myobj=Predmet.objects.get(pk=1)
  • 打印其中一个字段后打印(myobj.imePredavaca())
  • 我得到的不是像“Elvir”这样的值,而是HTML..input。。(我是否存储了html?)
型号
Models.py
URL
URL.py
表单
Forms.py

在将表单数据保存到模型中之前,必须清除表单数据。表单返回带有HTML标记的所有数据。你可以在网上查更多。在您的情况下,您需要这样做:

def save(self, razredID):

        razredPredmeta =  ModelRazred.objects.get(pk=razredID)
        myModel = Predmet(predavacIme=self.cleaned_data['Ime_Predavaca'],
                          predavacPrezime=self.cleaned_data['Prezime_Predavaca'], 
                          imePredmeta=self.cleaned_data['Ime_Predmeta'], razred=razredPredmeta)
        myModel.save()

另外,我建议将
save()
方法从
表单
移动到
视图
——在那里保存模型更具可读性,表单只处理表单数据。

您看过Django模板文档并使用了{{}符号还是看过u str_uu()自定义对象打印方式的方法?@dfundako是的,但如果我调用整个对象(即predmet),我只需要一个字段,例如{{predmet.predavacIme}},然后得到“Elvir”,这是正确的答案。注意:我使用(forms.Form)时没有清理数据。由于我不必对(forms.FormModels)执行此操作。@Elvir Muslic您没有在使用
Razred
表单的地方显示代码,因此我无法说明您为什么不清理那里的数据。也请阅读此答案-了解有关
cleaned_data
方法的更多信息。是的,但事实就是这样。我无法使用ModelsForm进行此操作。。。非常感谢。
"""urlconf for the base application"""


from django.urls import path

from .views import *


urlpatterns = [
    #Base
    path('', home, name='home'),





    # Stranice
    path('dodajrazred/', dodajrazred, name='dodajrazred'),

    path('predmeti/<int:razred_id>/', predmetisubmit, name='predmetisubmit'),
    path('razred/<int:razred_id>/', detail, name='detail'),

    path('predmetisubmit/<int:razred_id>/', predmetisubmit, name='predmetisubmit'),




    # Metode
    path('predmet_submit/<int:razred_id>/', predmet_submit, name='predmet_submit'),


]
    def detail(request, razred_id):

    # Funkcija vraca detalje o odredjenom razredu
    # i njegove ucenike?

    form = FormPredmet()
    detaljiRazreda = ModelRazred.objects.get(pk=razred_id)
    form.razred = detaljiRazreda

    predmeti = Predmet.objects.filter(razred__id = razred_id)
    # svi predmeti tog odredjenog razreda 

    data = {
        'form': form,
        'predmeti':predmeti,
        'razred_id': detaljiRazreda.id,
        'ime' : detaljiRazreda.ime,
        'prezime': detaljiRazreda.prezime
    }
from django import forms
from .models import ModelRazred, Predmet


class Razred(forms.ModelForm):
    godina = forms.IntegerField()
    brojRazreda = forms.IntegerField()
    ime = forms.CharField(max_length=50)
    prezime = forms.CharField(max_length=50)

    class Meta:
        model = ModelRazred
        fields = ('godina', 'brojRazreda', 'ime', 'prezime')


class FormPredmet(forms.Form):
    Ime_Predavaca = forms.CharField(max_length=50)
    Prezime_Predavaca = forms.CharField(max_length=50)
    Ime_Predmeta = forms.CharField(max_length=50)

    class Meta:
        model = Predmet
        fields = ('Ime_Predavaca', 'Prezime_Predavaca',
                  'Ime_Predmeta', 'razred')

    def save(self, razredID):

        razredPredmeta =  ModelRazred.objects.get(pk=razredID)
        myModel = Predmet(predavacIme=self['Ime_Predavaca'],
                          predavacPrezime=self['Prezime_Predavaca'], 
                          imePredmeta=self['Ime_Predmeta'], razred=razredPredmeta)
        myModel.save()
def save(self, razredID):

        razredPredmeta =  ModelRazred.objects.get(pk=razredID)
        myModel = Predmet(predavacIme=self.cleaned_data['Ime_Predavaca'],
                          predavacPrezime=self.cleaned_data['Prezime_Predavaca'], 
                          imePredmeta=self.cleaned_data['Ime_Predmeta'], razred=razredPredmeta)
        myModel.save()