2013-06-19 35 views
1

字段是必需的这是我的看法:错误,当没有字段为空

class EditInventoryView(UpdateView): 
    model = Inventory 
    form_class = InventoryForm 
    template_name = 'inventory/detail.html' 

    def get(self, request, **kwargs): 
     object = super(EditInventoryView, self).get_object() 
     formset = self.form_class(instance=object)  
     context = { 
      'form': formset, 
      'item': object, 
     } 
     return render(request, 'inventory/detail.html', context) 

    def post(self, request, **kwargs): 
     object = super(EditInventoryView, self).get_object() 
     form = self.form_class(request.POST, request.FILES, instance=object) 
     context = { 
      'form': form, 
      'item': object, 
     } 
     if form.is_valid(): 
      object = form.save() 
      messages.success(request, "Saved %s!" % object) 
      return redirect(object.get_absolute_url()) 
     else: 
      messages.error(request, 'Change a few things up and try submitting again. %s' % form.errors) 
      return render(request, 'inventory/detail.html', context) 

当我提交这始终是错误消息:

改变一些事情,并尝试再次提交。 <ul class="errorlist"><li>connections<ul class="errorlist"><li>This field is required.</li></ul></li></ul>

知道这种形式用来工作,但也许我是使其不能正常工作模式改变的东西。

型号:

class Inventory(MPTTModel): 
    type = models.ForeignKey('inventory_types.Type', db_column='type_id') 
    name = models.TextField(db_column='value') 
    asset_tag = models.IntegerField(db_column='asset_tag', unique=True, null=True, blank=True) 
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children') 

    connections = models.ManyToManyField('self', related_name='connections') 

    objects = InventoryManager() 
    tree = TreeManager() 

    class Meta: 
     db_table = 'inventory' 
     verbose_name_plural = 'Inventory Items' 

    class MPTTMeta: 
     order_insertion_by = ['type'] 

    def __unicode__(self): 
     return u'[%s] %s' % (self.type.name, self.name) 

    def get_related_descendants(self, include_self=False): 
     return self.get_descendants(include_self=include_self) \ 
        .select_related('type', 'parent').prefetch_related('connections') 

    def get_related_ancestors(self, include_self=False): 
     return self.get_ancestors(include_self=include_self) \ 
        .select_related('type', 'parent').prefetch_related('connections') 

    def get_absolute_url(self): 
     return reverse('inventory:view', args=(self.id,)) 

    def add_anc_type(self, id, all_types, all_objects): 
     if id is not self.id: all_types.add(all_objects[id][1]) 
     if all_objects[id][0] is not None: 
      self.add_anc_type(all_objects[id][0], all_types, all_objects) 

    def add_desc_type(self, id, all_types, all_objects): 
     if id not in all_objects: return 
     for child, type_id in all_objects[id].iteritems(): 
      all_types.add(type_id) 
      self.add_desc_type(child, all_types, all_objects) 

回答

2

上连接将清除表格的错误设置blank=True。如果您希望文件在数据库中可以为空,那么您可以设置null=True或仅创建一个默认值。

为了消除你只需要做到这一点的形式错误:

connections = models.ManyToManyField('self', related_name='connections', blank=True) 

希望这有助于!

+0

MAZAL TOV!谢谢!我从来不知道将许多部分添加到许多部分导致了所有问题! – Neal

+0

我很高兴你做到了这一点:) –

+0

我真的不知道为什么我没有看到它在错误信息中说“连接”,也许是因为它在我的窗体中不可见。 – Neal

相关问题