我正在處理一個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