2012-01-27 80 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

相关问题