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
URLURL.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()