2015-06-25 4 views
0

я написал тестовый случай:Как проверить модель модели django?

class MyTestCreateFilter(TestCase): 

    def test_createfilter(self): 
     test_filter = Filter(user_profile_id= 3, 
     keyword = 'ca', 
     industry = 'it', 
     zip_code = '50002', 
     distance = 30, 
     creation_date = datetime.date.today(), 
     last_run_date = datetime.date.today() 
     ) 


     test_filter_form = FilterForm(instance=test_filter) 

     self.assertEqual(test_filter_form.is_valid(), False)#without data 
     test_filter_form = FilterForm({'user_profile_id':3,'keyword': 'ca','industry':'it','zip_code':'50002','distance':30,'creation_date': datetime.date.today(), 
     'last_run_date': datetime.date.today() }, instance=test_filter) 
     print test_filter_form.is_valid() 

дает ошибку:

DoesNotExist: UserProfile matching query does not exist. 

это мой form.how написать тестовый пример:

класса FilterForm (forms.ModelForm):

class Meta: 

    model=Filter 

    exclude=('user_profile','creation_date','last_run_date') 

    widgets = { 
     'zip_code': forms.TextInput(attrs={'placeholder': "e.g.      20708"}), 
    } 

def clean(self): 

    user_profile = self.instance.user_profile 

    keyword = self.cleaned_data.get("keyword") 
    if Filter.objects.filter(user_profile=user_profile, keyword=keyword).exclude(id=self.instance.id).count() > 0: 
     msg = u"A filter with that keyword already exists!" 
     self._errors["keyword"] = self.error_class([msg]) 

    return self.cleaned_data 

когда я проверить форму дает эту ошибку:

User_Profile = self.instance.user_profile Файл «/usr/local/lib/python2.7/dist-packages/django/db/models/fields/related.py », строка 343, в получить

raise self.field.rel.to.DoesNotExist 

DoesNotExist

, как ее решить?

+0

Это может быть полезно [добавить] (http://stackoverflow.com/posts/31046998/edit) модели на ваш вопрос. Как и полная обратная трасса. – Evert

+0

Вы проверили мой ответ? Если это не сработает для вас, сообщите мне. Если он решил вашу проблему, рассмотрите [принятие ответа] (http://meta.stackoverflow.com/a/5235). – falsetru

+0

no.it не работает для меня. – susmitha

ответ

0

Просто создание объекта модели не создаст запись в базе данных.

Используйте .objects.create, чтобы создать запись.

test_filter = Filter.objects.create(
    user_profile_id= 3, 
    keyword = 'ca', 
    industry = 'it', 
    zip_code = '50002', 
    distance = 30, 
    creation_date = datetime.date.today(), 
    last_run_date = datetime.date.today() 
) 

или использовать save:

test_filter = Filter(...) 
test_filter.save() 
Смежные вопросы