2013-04-09 51 views
0

我想設置窗體值..我沒有在窗體中顯示它,但想要在我的視圖中設置字段的值?設置窗體字段值django

這是我的ModelForm:

class payment_detail(models.Model): 
    status = (
     ('Paid','Paid'), 
     ('Pending','Pending'), 
    ) 
    id =    models.AutoField(primary_key=True) 
    #ref_id =    models.CharField(max_length=32, default=_createId) 

    #user = models.ForeignKey(User, editable = False) 
    payment_type= models.ForeignKey(Payment_types,to_field = 'payment_types', null=True, blank=True) 

    job_post_id= models.ForeignKey(jobpost,to_field = 'job_id', null=True, blank=True) 
    price= models.ForeignKey(package,to_field = 'amount', null=True, blank=True) 
    created_date = models.DateField(("date"), default=datetime.date.today) 
    payment_status = models.CharField(max_length=255, choices=status,default='Pending') 
    transaction_id = models.CharField(max_length=255, null=True, blank=True) 
    payment_date = models.DateField(null=True, blank=True) 
    email = models.CharField(max_length=255, null=True) 


    def __unicode__(self): 
     #return self.user 
     return unicode(self.id) 
     #return self.ref_id 
     return unicode(self.payment_type) 
     return unicode(self.job_post_id) 
     return unicode(self.price) 
     return unicode(self.created_date) 
     return unicode(self.payment_status) 
     return unicode(self.payment_date) 
     return unicode(self.transaction_id) 
     return unicode(self.email) 


admin.site.register(payment_detail) 

我的觀點:

def payment(request): 


    if "pk" in request.session: 
    pk = request.session["pk"] 
    Country = request.session["country"] 


    price = package.objects.filter(item_type__exact='Job' ,country__country_name__exact=Country, number_of_items__exact='1') 

    if request.method == 'POST': 

     entity = payment_detail() 
     form = jobpostForm_detail(request.POST, instance=entity) 

     if form.is_valid(): 
      #form.fields["transaction_id"] = 100 
      form.save() 
      #message = EmailMessage('portal/pay_email.html', 'Madeeha ', to=[form.cleaned_data['email']]) 
      #message.send() 

      return HttpResponseRedirect('/portal/pay/mail/') 
    else: 
     form = jobpostForm_detail(initial={'transaction_id': "US"}) 


    c = {} 
    c.update(csrf(request)) 

    return render_to_response('portal/display.html',{ 
     'form':form,'price':price 
    },context_instance=RequestContext(request)) 

像我想設置job_location的價值,不希望在表單中顯示它..

+0

是否要在用戶提交表單之後或之前設置值? – Ngenator 2013-04-09 17:29:35

+0

之前,並提交該值與其他數據的形式 – 2013-04-09 17:46:30

回答

1

forms.py

//this is how you hide the field 
class jobpostForm(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(jobpostForm, self).__init__(*args, **kwargs) 
     self.fields['job_location'].widget = forms.HiddenInput() 

    class Meta: 
     model = jobpost 

views.py

......... 
if request.method == 'POST': 
    entity = payment_detail(transaction_id="US") #change 
    form = jobpostForm_detail(request.POST, instance=entity) 

    if form.is_valid(): 
     #form.fields["transaction_id"] = 100 
     form.save() 
     #message = EmailMessage('portal/pay_email.html', 'Madeeha ', to=[form.cleaned_data['email']]) 
     #message.send() 

     return HttpResponseRedirect('/portal/pay/mail/') 
else: 
    form = jobpostForm_detail() 

.................. 
+0

它給了我這條線keyerror我猜..self.fields ['job_location']。widget = forms.HiddenInput() – 2013-04-09 17:45:34

+0

,我想保存該值與數據庫其他表格數據 – 2013-04-09 17:46:04

+0

發佈您的問題中的錯誤追溯。這是你隱藏領域的方式。也許你把一些觸發錯誤的東西 – catherine 2013-04-09 17:54:32