我在ModelForm
Django
1.7
models.py
from django.db import models
from django.forms import ModelForm
class Biodata(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
room_number = models.IntegerField(default=0)
def __str__(self):
return self.first_name
class BiodataForm(ModelForm):
class Meta:
model = Biodata
fields = '__all__'
views.py
def getdata(request):
if request.method == 'POST':
form = BiodataForm(request.POST)
if form.is_valid():
post = request.POST
firstname = post['first_name']
lastname = post['last_name']
newbiodata = form.save()
return render(request, 'bio/index.html', {'first_name': firstname, 'last_name': lastname})
else:
form = BiodataForm()
return render(request, 'bio/biodataform.html', {'form': form})
所有事情都运转良好
问题:
如何使用这些表单查看我的数据库和信息?
答案 0 :(得分:0)
你可以做两件事。
信任Django 。保存表单,然后将您获得的对象传递到模板中。如果对象存在,则应将其传递到模板中。像这样:
def getdata(request):
if request.method == 'POST':
form = BiodataForm(request.POST)
if form.is_valid():
post = request.POST
newbiodata = form.save()
return render(request, 'bio/index.html',
{ 'first_name': newbiodata.firstname,
'last_name': newbiodata.lastname })
从数据库中明确询问对象。使用表单中对象的主键(pk
)从数据库中显式调用它。这可能是矫枉过正的,并会强制进行额外的(可能是多余的)查询。优点是,如果它没有保存,这将抛出一个非常明显的ObjectDoesNotExist
异常但如果你是偏执的排序,这将有效:
def getdata(request):
if request.method == 'POST':
form = BiodataForm(request.POST)
if form.is_valid():
post = request.POST
bio = form.save()
newbiodata = models.Biodata.objects.get(pk=bio.pk) # get it back
return render(request, 'bio/index.html',
{ 'first_name': newbiodata.firstname,
'last_name': newbiodata.lastname })
答案 1 :(得分:0)
您不应该在成功的帖子上呈现模板。相反,您应该重定向到新的URL。这为您提供了从数据库中获取新对象的绝佳机会。在表单视图中:
newbiodata = form.save()
return redirect('show_biodata', kwargs={'pk': newbiodata.pk})
现在您可以在show_biodata视图中再次获取它:
def show_biodata(request, pk):
biodata = BioData.objects.get(pk=pk)
return render(request, 'bio/index.html', {'first_name': biodata.firstname, 'last_name': biodata.lastname})