Я работаю над проектом, в котором есть форма RSVP. Прямо сейчас у меня есть функция, чтобы обрабатывать их основную информацию, включая количество дополнительных гостей, которых они приносят с собой. Этот номер затем используется для заполнения X числа полей в наборе форм на следующей странице, который просто запрашивает имена гостей и комментарии.
Что я хочу сделать, так это добавить скрытое поле в набор форм имен гостей, которое будет содержать имя человека, который зарегистрировал их как пришедших.
Я уже передаю данные сеанса, чтобы предварительно заполнить имя первого гостя информацией о зарегистрированном госте, и у меня определена переменная сеанса, которая может заполнить скрытое поле. Мне просто нужно знать, как добавить поле в форму.
из импортных моделей 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 (имя, фамилия и адрес электронной почты) в каждое поле «selected_by» в моем наборе форм (view = guest_list_add, model = GuestAttending)
Спасибо!