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'),
]
Форма валидна, ошибок нет, новый чеклист создан, только вот он должен автоматически принадлежать заданной задаче. А его нет, приходится заходить в админ панель и выбирать к какой задаче он относится.