我正在处理一个RSVP表单的项目。现在我可以处理他们的基本信息,包括他们带来的额外客人数量。然后这个数字用于填充下一页上的formset中的X个字段,这些字段只是要求客人的姓名和评论。Django如何将隐藏字段添加到formset并填充它们?
我期望能够做的就是添加一个隐藏字段到客人姓名的formset中,该姓名将包含将他们注册为即将到来的人的姓名。
我已经通过会话数据预先填充了第一个客人姓名和注册客人的信息,我有一个会话变量定义,可以填充隐藏字段。我只需要知道如何将该字段添加到formset。
从django.db进口车型
#models.py
class Guest(models.Model):
ATTENDING_CHOICES = (
(u'Yes', u'Yes'),
(u'No', u'No'),
(u'Maybe', u'Maybe?')
)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField(max_length=50)
attending = models.CharField(max_length=15, choices=ATTENDING_CHOICES)
no_of_guests = models.IntegerField(verbose_name='Total # of guests', max_length=3)
notes = models.TextField(null=True, blank=True)
def __unicode__(self):
return u'%s, %s - %s' % (self.last_name, self.first_name, self.email)
class GuestsAttending(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
comments = models.CharField(null=True, blank=True, max_length=100)
#This is the field that I would like to be hidden and filled
registered_by = models.CharField(max_length=40, blank=True, null=True, editable=False)
def __unicode__(self):
return u'%s %s' % (self.last_name, self.first_name)
和浏览次数:
#views.py
from django.forms.models import modelformset_factory
def guest_create(request):
context_instance=RequestContext(request)
if request.method == 'POST':
form = GuestForm(request.POST)
if form.is_valid():
request.session['first_name']= request.POST['first_name']
request.session['last_name']= request.POST['last_name']
request.session['e_mail']= request.POST['email']
request.session['no_of_guests']= request.POST['no_of_guests']
form.save()
return HttpResponseRedirect('/guest_list_add/')
else:
form = GuestForm()
return render_to_response('rsvp.html', locals(), context_instance,)
def guest_list_add(request):
n = int(request.session['no_of_guests'])
context_instance=RequestContext(request)
GuestFormset = modelformset_factory(GuestsAttending, extra=int(n))
if request.method == 'POST':
formset = GuestFormset(request.POST)
if formset.is_valid():
instance = formset.save()
return HttpResponseRedirect('/submitted/')
else:
formset = GuestFormset(queryset=GuestsAttending.objects.none(), initial=[
{'first_name': request.session['first_name'],
'last_name': request.session['last_name'],
])
return render_to_response('guest_list_add.html', locals(), context_instance,)
让我知道,如果你想看到的任何另外代码 - 喜欢的模板可能?
所以,我在一个详细的总结 - 问题,我怎样才能增加我的表单集的request.session数据(第一&姓氏和电子邮件),以每一个“registered_by”领域(查看= guest_list_add,模型= GuestsAttending) 谢谢!
见Django文档:https://docs.djangoproject.com/en/1.7/topics/forms/formsets/#adding-additional-fields-to-a-formset – CpILL 2015-01-13 03:50:36