2014-09-29 58 views
0

我正在使用django-angular在單個頁面應用程序上執行基本的CRUD操作。我有一堆我需要在該頁面中集成的表單。django-angular,顯示servor端錯誤

我用下面的mixin:

from djangular.forms import NgModelFormMixin, NgFormValidationMixin 
from djangular.styling.bootstrap3.forms import Bootstrap3FormMixin 

class AngularFormMixin(Bootstrap3FormMixin, NgModelFormMixin, NgFormValidationMixin): 
    pass 

有以下形式:

class MyModelForm(AngularFormMixin, forms.ModelForm): 
    scope_prefix = 'dj_my_model' 
    form_name = 'my_model_form' 

    class Meta: 
     model = MyModel 
     fields = ('field1', 'field2',) 

    def clean(self, *args, **kwargs): 
     ... some cleaning here 

都伴隨着以下幾種觀點:

from djangular.views.crud import NgCRUDView 

class MyModelCRUDView(NgCRUDView): 
    model = MyModel 
    fields = ('field1', 'field2',) 

    def get_form_class(self): 
     return MyModelForm 

最後,在html:

<form name="{{ form.form_name }}" novalidate> 
     {{ form.as_div }} 
     <input type="submit" class="btn btn-primary" ng-click="myModelSubmit({{ form.scope_prefix }})" ng-disabled="{{ form.form_name }}.$invalid" value="Submit"> 
</form> 

角部分是:(爲MyModel從工廠推出)

 function myModelSubmit(my_model) { 
      var new_model = new MyModel(my_model); 
      new_model.$save(function(){ 
       $scope.mymodels.push(new_model); 
      }); 
     } 

但是,當後失敗,得到了一個響應碼400,用於我的帖子,我不能在窗體上顯示錯誤消息。我如何將響應與我的django表單綁定來顯示錯誤消息?我讀過我可以爲某些領域創建指令,但在這裏似乎很瘋狂,我有很多自定義驗證的表單。

+0

請注意,提供的代碼不再是好的(在問題中)與最新版本的django-angular。你應該看看dango-angular doc(特別是mixin)。 – abrunet 2015-09-21 10:51:15

回答

1

好的,甚至沒有評論。但我找到了我自己的答案。您需要添加一個錯誤回調在他保存像這樣的:

new_inputfile.$save(
    function(){ 
    // success callback  
    }, 
    function(data) { 
    djangoForm.setErrors(
     $scope.my_form, data.data.detail); 
    } 
); 

而且你需要添加djangoForm您關聯。這一點在文檔中沒有詳細說明,但是通過例子提及時間。乾杯guyz

+0

請注意,提供的代碼在最新版本中不再可用(在問題中)。你應該看看dango-angular doc。 (特別是mixin) – abrunet 2015-09-21 10:50:50