Тесты в django. Не создается задача через форму
Всем привет! помогите, пожалуйста, разобраться с тестом. В test_post_task_create получаю код 200. И таска через форму не создается получается. Уже все испробовал, вроде все верно. Залогенный юзер автоматически становится автором таски при создании. На локале все работает как надо.
class Task_CRUD_test(TestCase):
def setUp(self):
self.user = User.objects.create(first_name='Al', last_name='Pacino', username='Scarface', password='123')
self.client.force_login(self.user)
self.status1 = Status.objects.create(name='готово')
self.status2 = Status.objects.create(name='в процессе')
self.task = Task.objects.create(name='The matrix', status=self.status1, author=self.user)
def test_get_task_create(self):
response = self.client.get(reverse('task:task_create'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'task/task_create.html')
def test_post_task_create(self):
form_data = TaskCreateForm(data={
'name': 'Totoro',
'description': 'must watch it!',
'status': self.status2,
}).data
response = self.client.post(reverse('task_create'), form_data, follow=True)
self.assertEqual(response.status_code, 302)
self.assertTrue(Task.objects.filter(name='Totoro').exists())
task = Task.objects.get(name='Totoro')
self.assertEqual(task.author_id, self.user.id)
self.assertEqual(task.author.first_name, 'Al')
self.assertRedirects(response, '/tasks/')
self.assertEqual(task.status, 'в процессе')
**А это сам вью.**
class TaskCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
model = Task
form_class = TaskCreateForm
template_name = 'task/task_create.html'
success_url = reverse_lazy('tasks')
success_message = 'Задача успешно создана'
def form_valid(self, form):
form.instance.author = self.request.user
return super(TaskCreateView, self).form_valid(form)
**модель**
class Task(models.Model):
name = models.CharField(max_length=200, unique=True, verbose_name='Имя')
description = models.TextField(blank=True, verbose_name= 'Описание')
status = models.ForeignKey(Status, related_name='status', on_delete=models.PROTECT, verbose_name='Статус')
executor = models.ForeignKey(User, related_name='executor', null=True, blank=True, on_delete=models.PROTECT, verbose_name='Исполнитель')
labels = models.CharField(max_length=200, null=True, blank=True, verbose_name='Метки')
created_at = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(User, related_name='author', on_delete=models.PROTECT, verbose_name='Автор')
class Meta:
db_table = 'Task'
def __str__(self):
return f"Задача {self.name} от {self.author}. Cтатус {self.status}. Исполняет {self.executor}"