2013-06-19 37 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

相關問題