2012-01-27 23 views
0

我試圖從表單捕獲POST數據時遇到了錯誤。奇怪的是,因爲相同的算法適用於另一個Django應用程序模型。UnboundLocalError在分配之前引用的<variablename>本地變量

的車型:

class Item(models.Model): 
    code = models.CharField(max_length=200, unique=True) 
    barcode = models.CharField(max_length=300) 
    desc = models.CharField('Description',max_length=500) 
    reg_date = models.DateField('registered date') 
    registrar = models.CharField(max_length=100) 
    def __unicode__(self): 
     return self.code + ' : ' + self.desc 

class ItemInfo(models.Model): 
    model = models.ForeignKey(Item) 
    supplier = models.ForeignKey(Supplier) 
    stock_on_hand = models.IntegerField() 
    stock_on_order = models.IntegerField() 
    cost = models.IntegerField() 
    price = models.IntegerField() 
    unit = models.CharField(max_length=100) 
    lead_time = models.IntegerField() 

    def __unicode__(self): 
     return Item.code + ' : ' + supplier 

class ItemForm(ModelForm): 
    class Meta: 
     model = Item 

class ItemInfoForm(ModelForm): 
    class Meta: 
     model = ItemInfo 
     exclude = ('model') 

而對於非工作(項目)的views.py功能是這樣的:

def register(request): 
    csrf_context = RequestContext(request) 
    current_user = User 
    if request.user.is_authenticated(): 
     if request.POST: 
      item = Item() 
      item_info = ItemInfo() 

      header_form == ItemForm(data=request.POST,instance=item) 
      details_form == ItemInfoForm(data=request.POST, instance=item_info) 

      if header_form.is_valid(): 
       header = header_form.save() 

       if details_form.is_valid(): 
        details = details_form.save(commit=False) 
        details.supplier = header 
        details.save() 
        return HttpResponseRedirect('/item/') 
       else: 
        return render_to_response('error/denied_data_entry.html') 
     else: 
      header_form = ItemForm() 
      details_form = ItemInfoForm() 
     return render_to_response('item/register.html',{'header_form' : header_form, 'details_form' : details_form}, csrf_context) 
    else: 
     return render_to_response('error/requires_login.html', csrf_context) 

另一個工作工作views.py功能(供應商)模型在這裏:

def register(request): 
    csrf_context = RequestContext(request) 
    current_user = User  
    if request.user.is_authenticated(): 
     if request.POST: 
      supplier = Supplier() 
      supplier_info = SupplierInfo() 

      header_form = SupplierForm(data=request.POST, instance=supplier) 
      details_form = SupplierInfoForm(data=request.POST, instance=supplier_info) 

      if header_form.is_valid(): 
       header = header_form.save() 

       if details_form.is_valid(): 
        details = details_form.save(commit=False) 
        details.model = header 
        details.save() 
        return HttpResponseRedirect('/supplier/') 
       else: 
        return render_to_response('error/denied_data_entry.html') 
      else: 
       return render_to_response('error/denied_data_entry.html') 
     else: 
      header_form = SupplierForm() 
      details_form = SupplierInfoForm() 
      return render_to_response('supplier/register.html', {'header_form' : header_form, 'details_form' : details_form}, csrf_context) 
    else: 
     return render_to_response('error/requires_login.html', csrf_context) 

回溯頁面顯示POST確實傳遞了一些變量。請幫助我,我不知道爲什麼它適用於供應商,但不是項目。

P/S:對不起。

+0

拍攝!我想通了,我用'=='而不是'='。這是跛腳。顯然,stackoverflow編碼主題使它看起來更清晰。 – 2012-01-27 04:08:36

+0

請考慮將來更好,更適用的標題。 – nfirvine 2012-01-27 23:32:50

回答

3

的問題是在這裏:

# ... 
header_form == ItemForm(data=request.POST,instance=item) 
details_form == ItemInfoForm(data=request.POST, instance=item_info) 

你並沒有使用,你比較。

+0

是!謝謝!猜猜我被燒掉了大聲笑 – 2012-01-27 04:17:11

+0

@HaikalNashuha哈哈!你爲這樣一個小錯誤發佈了很多代碼:) – juliomalegria 2012-01-27 04:18:07

+0

><無法幫助它大聲笑。感到無助 – 2012-01-27 04:59:57

相關問題