Django generic.edit CreateView и UpdateView

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

views.py `



class TaskList(LoginRequiredMixin, ListView):
    model = Task
    #default name = {{object_list}}
    context_object_name = 'tasks'

    def get_context_data(self,**kwargs):
        context = super().get_context_data(**kwargs)
        context['tasks'] = context['tasks'].filter(user=self.request.user)
        context['count'] = context['tasks'].filter(complete=False).count()

        search_input = self.request.GET.get('search-area') or ''
        if search_input :
            context['tasks'] = context['tasks'].filter(title__icontains=search_input)
        
        context['search_input'] = search_input
        return context

    
class TaskCreate(LoginRequiredMixin, CreateView):
    model = Task
    context_object_name = 'task'
    fields = ['title','description','priority','complete']
    success_url = reverse_lazy('tasklist')

    def form_valid(self, form):
        form.instance.user=self.request.user
        return super(TaskCreate,self).form_valid(form)

#create a new form to exclude certain fields on model while updating
class PostFormUpdate2(ModelForm):
    class Meta:
        model = Task
        exclude = ('user',)

class TaskUpdate(LoginRequiredMixin, UpdateView):
    model = Task
    form_class = PostFormUpdate2
    success_url = reverse_lazy('tasklist')


task_form.html

{% extends 'base/main.html' %}
{% block content %}

<div class="header-bar">
    <a href="{% url 'tasklist' %}">&#8592; Back</a>
</div>
{% if request.user == task.user %}
<p>{{task.user}}</p>
<div class="card-body">
    <form action="" method="POST">
        {% csrf_token %}
        {{form.as_p}}
        <input class="button" type="submit" value="Update">
    </form>
{% endif %}
</div>


{% endblock content %}

Создание и обновление используют одну и ту же форму. я полагаю, что не могу установить request.user равным task.user, поскольку create не принимает task в качестве параметра. что еще я могу установить? или мне нужно создать новую форму?

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