【发布时间】:2018-11-24 08:07:54
【问题描述】:
我将提供此问题所需的所有详细信息。
问题描述:
- 我用 Django 表单存储了一些输入字段(即
FormPredmet) - 之后,我将表单保存在一个名为 >
Predmet的模型中 - 提取数据时,我遇到了 ModelForm 没有的问题
- 打印或显示(在页面上) Predmet.predavacIme 对象时,我得到:
<input type="text" name="Ime_Predavaca" value="Elvir" maxlength="50" required id="id_Ime_Predavaca" /> <input type="text" name="Ime_Predavaca" value="Elvir" maxlength="50" required id="id_Ime_Predavaca" /> <input type="text" name="Ime_Predavaca" value="Dzenan" maxlength="50" required id="id_Ime_Predavaca" /> <input type="text" name="Ime_Predavaca" value="Petko" maxlength="50" required id="id_Ime_Predavaca" />
相反,我只想要这些中的每一个的单个值:
所需输出:Elvir,Elvir,Dzenan,Petko
总结:
- 我使用 FormPredmet(forms.Form) 获取数据,这是我认为的问题
- 然后将数据保存到 Model Predmet 中
- 我尝试获取任何 obj,例如:myobj = Predmet.objects.get(pk=1)
- 在打印其中一个字段后 print(myobj.imePredavaca())
- 我得到的不是像“Elvir”这样的值,而是 HTML..input..(我存储了 html 吗?)
型号models.py
class ModelRazred(models.Model):
godina = models.PositiveSmallIntegerField()
brojRazreda = models.PositiveSmallIntegerField()
ime = models.CharField(max_length=50)
prezime = models.CharField(max_length=50)
class Predmet(models.Model):
predavacIme = models.CharField(max_length=50)
predavacPrezime = models.CharField(max_length=50)
imePredmeta = models.CharField(max_length=50)
razred = models.ForeignKey(ModelRazred, on_delete=models.CASCADE)
网址urls.py
"""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'),
]
观看次数views.py
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
}
表格forms.py
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()
【问题讨论】:
-
您是否查看过 Django 模板文档并使用 {{}} 表示法或查看过 __str__() 方法来自定义您希望如何打印对象?
-
@dfundako 是的,但是如果我调用整个对象(即 predmet)我只想要一个字段,例如 {{predmet.predavacIme}} 并获得“Elvir”
标签: python django django-models django-forms django-views