Всем привет.
Хочу проверить форму, которая на сайте принимает данные, создает новый объект:
Так:
Url:
url(r'^addcreview(?P<add_id>[0-9]+)$', views.addcreview, name='addcreview'),
Модель:
class Creview(models.Model):
creview = models.ForeignKey(Course, on_delete=models.CASCADE, default=1)
userview = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
# username = models.CharField(max_length=200, help_text="Имя автора отзыва", verbose_name="Имя автора отзыва")
review = models.TextField(help_text="Отзыв", verbose_name="Сам отзыв о курсе")
View:
def addcreview(request, add_id):
token = {}
token.update(csrf(request))
if request.user.is_authenticated():
current_user = request.user
if request.POST:
course = Course.objects.get(id=add_id)
form = CreviewForm(request.POST)
if form.is_valid():
review = form.cleaned_data['review']
review_obj = Creview(creview=course, userview=current_user, review=review)
review_obj.save()
return redirect('/course' + add_id, token)
Тест:
class Test_Forms_For_Safe(TestCase):
def test_creview_form_save(self):
##########
user = User.objects.create(id=1, username="gavgav", password='W123456')
profile = Profile.objects.create(user=user)
self.client.login(username='gavgav', password='W123456')
##########
course = Course.objects.create(id=1, title="заголовок")
##########
response = self.client.post('/addcreview1',
{'id': "1", "creview": "course", "userview": "user", "review": "ревьюшка"})
##########
creview = Creview.objects.get(id=1)
self.assertEqual(creview.review, 'ревьюшка')
Т.е. моя Логика:
- создаю юзера
- захожу с ним на сайт
- создаю объект Course
- передаю в url post данные, которые должны создать объект Creview
- Проверяю совпадение данных.
Ошибка:
faceset.models.DoesNotExist: Creview matching query does not exist.
Можете подсказать, что я делаю не так?