나는 그것에 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,)
을 알려주세요?
그래서, 자세한 summary- 에 내 질문에 어떻게 해당 formset의 모든 "registered_by"필드에 request.session 데이터 (첫번째 & 성 및 이메일) (보기 = guest_list_add, 모델 = GuestsAttending) 감사를 추가 할 수 있습니다 !
참조 장고 문서 : https://docs.djangoproject.com/en/1.7/topics/forms/formsets/#adding-additional-fields-to-a-formset – CpILL