2016-08-21 3 views
2

장고 양식에 대한 시험을 쓰고 있습니다. 초기 데이터를 채우고 있습니다. 하지만 내가 양식을 저장하면 cleaned_data 속성이 없다는 오류가 발생합니다.장고 모델 양식 - 오류없이 유효하지 않음

양식이 유효성을 검사하지 않지만 오류를 표시하지 않기 때문에 이런 현상이 발생할 수 있습니다.

여기 코드가 있습니다.

def test_keyw(self): 
    class BlogPostKeywordCheck(forms.ModelForm): 
     class Meta: 
      model = BlogPost 
      exclude =() 

    data = {'keywords': 'awwww,aaa,lol'} 


    initial_data = { 
     "title":"Test Keywords", 
     "content":"<p>Testing Keywords</p>", 
     "status":CONTENT_STATUS_PUBLISHED, 
     "keywords":"call,me,abc", 
     "user":self._user, 
     "allow_comments":"on", 
     "gen_description":"on", 
     "in_sitemap":"on", 
     "_save":"Save" 
    } 

    print (self._user) 
    submitted_form = BlogPostKeywordCheck(initial=initial_data) 

    print (submitted_form.fields) 

    submitted_form.instance.user = self._user 
    print("Instance Title",submitted_form.instance.title) 


    print("Valid: ",submitted_form.is_valid()) 

    print ("Errors: ",submitted_form.errors) 
    submitted_form.save() 

    print (Keyword.objects.all()) 
    self.assertTrue(submitted_form.is_valid()) 
    print (submitted_form.errors) 

은 현재 O는/P는

Creating test database for alias 'default'... 
test 
OrderedDict([('title', <django.forms.fields.CharField object at 0x05185CF0>), ('slug', <django.forms.fields.CharField object at 0x05185BD0>), ('_meta_title', <django.forms.fields.CharField object at 0x05185ED0>), ('description', <django.forms.fields.CharField object at 0x05185E10>), ('gen_description', <django.forms.fields.BooleanField object at 0x05185C10>), ('keywords', <django.forms.fields.CharField object at 0x05185CD0>), ('status', <django.forms.fields.TypedChoiceField object at 0x05185C50>), ('publish_date', <django.forms.fields.DateTimeField object at 0x05185B10>), ('expiry_date', <django.forms.fields.DateTimeField object at 0x05185D90>), ('short_url', <django.forms.fields.URLField object at 0x05185AD0>), ('in_sitemap', <django.forms.fields.BooleanField object at 0x05185FD0>), ('content', <django.forms.fields.CharField object at 0x05182E50>), ('user', <django.forms.models.ModelChoiceField object at 0x05182350>), ('categories', <django.forms.models.ModelMultipleChoiceField object at 0x051820D0>), ('allow_comments', <django.forms.fields.BooleanField object at 0x051821F0>), ('featured_image', <filebrowser_safe.fields.FileBrowseFormField object at 0x05182310>), ('related_posts', <django.forms.models.ModelMultipleChoiceField object at 0x051822B0>)]) 
(u'Instance Title', u'') 
(u'Valid: ', False) 
(u'Errors: ', {}) 
Destroying test database for alias 'default'... 

Process finished with exit code 1 

Error 
Traceback (most recent call last): 
    File "F:\Projects\GIT\mezzanine\build\build1\mezzanine\generic\tests.py", line 226, in test_keyw 
    submitted_form.save() 
    File "C:\Python27\lib\site-packages\django\forms\models.py", line 449, in save 
    self._save_m2m() 
    File "C:\Python27\lib\site-packages\django\forms\models.py", line 416, in _save_m2m 
    cleaned_data = self.cleaned_data 
AttributeError: 'BlogPostKeywordCheck' object has no attribute 'cleaned_data' 

내가 인스턴스에 명시 적으로 USER_ID를 추가하지 않는 경우에도, 그것은 USER_ID가 null이 될 수 없음을 알려줍니다이다. 초기 데이터에 입력하면 작동하지 않습니다.

답변

2

양식에 데이터를 전달하지 않았습니다. 초기 값만 전달했습니다. 따라서 양식은 묶여 있지 않으며 유효하지 않습니다.

+0

초기 데이터를 제공했으며 양식이 특정 인스턴스에 바인딩되지 않았습니까? 일단 구원되면 묶여 야합니다. –

+0

아니, 전혀 작동하지 않습니다. [the docs] (https://docs.djangoproject.com/en/1.10/ref/forms/api/#ref-forms-api-bound-unbound)를 참조하십시오. 양식은 데이터를 전달할 때 바인딩됩니다. 그렇지 않은 경우 양식이 바인딩됩니다. –