Django Создание нового сообщения, но оно не принадлежит никому

Создание нового контрольного списка, контрольный список создается, но я должен зайти в админ панель, чтобы установить, к какой задаче он относится. Задача является иностранным ключом в контрольном списке.

views.py

def project_detail(request, slug):
    '''
    Detailed view of given project
    '''
    context = {}
    project     = get_object_or_404(Project, slug=slug)
    tasks       = Task.objects.filter(task_completed=False, project=project)

    context.update({'project': project})
    checklist_form  = ChecklistForm(request.POST or None)

    if request.method == "POST":
        # Create new Checklist
        if 'save_new_checklist' in request.POST:
            if checklist_form.is_valid():
                print("\n\n New checklist form is valid")
                author = Profile.objects.get(user=request.user)
                new_checklist = checklist_form.save(commit=False)
                new_checklist.user = author
                new_checklist.checklist = tasks
                new_checklist.save()

                return redirect('project_detail', slug=slug)


    context.update({
        'tasks': tasks,
        'checklist_form': checklist_form,
        'title': tasks
    })

    return render(request, 'projects/tasks.html', context)

models.py

class Task(models.Model):
    title           = models.CharField(max_length=55, null=True, blank=True)
    slug            = models.SlugField(max_length=500, unique=True, blank=True)
    task_completed  = models.BooleanField(default=False)
    description     = models.TextField(default="Task description")
    date            = models.DateTimeField(auto_now_add=True)
    due_date        = models.DateTimeField()

    project         = models.ForeignKey(Project, blank=True, null=True, related_name='task', on_delete=CASCADE)

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
        super(Task, self).save(*args, **kwargs)

    def __str__(self):
        return self.title

class Checklist(models.Model):
    title           = models.CharField(max_length=55)
    slug            = models.SlugField(max_length=500, unique=True, blank=True)
    date            = models.DateTimeField(auto_now_add=True)
    due_date        = models.DateTimeField()
    check_completed = models.BooleanField(default=False)
    description     = models.TextField(default="Checklist description")

    task            = models.ForeignKey(Task, blank=True, null=True, related_name='checklist', on_delete=CASCADE)

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
        super(Checklist, self).save(*args, **kwargs)

    def get_url(self):
        return reverse('task_detail', kwargs={
            'slug':self.slug
        })

    def __str__(self):
        return self.title

urls.py

urlpatterns = [
    path('projects/', teams, name='teams'),
    path('projects/project/<slug>/', projects, name='projects'),
    path('projects/tasks/<slug>/', project_detail, name='project_detail'),
    path('projects/checklist/<slug>/', task_detail, name='task_detail'),
]

Форма валидна, ошибок нет, новый чеклист создан, только вот он должен автоматически принадлежать заданной задаче. А его нет, приходится заходить в админ панель и выбирать к какой задаче он относится.

Вернуться на верх