Подстановка id зарегистрированного пользователя в id автора задачи Django

Рейтинг: 1Ответов: 1Опубликовано: 14.07.2023

Взята встроенная модель пользователя. Создана модель задачи. По дефолту в задаче автор не указан. Нужно сделать так, чтобы автоматически id авторизованного пользователя ставилось в поле ID автора создаваемой задачи. Создание есть, а вот подстановки id нет

models.py

class Task(models.Model):
    id =  models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    tag = models.CharField(max_length=120)
    text = models.TextField()
    to_date = models.DateField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)

forms.py

class TForm(ModelForm):
    class Meta:
        model = Task
        fields = ['tag','text', 'to_date', 'author']

views.py

def tasks(request):

    if request.method == 'GET':
        #Вывод задач на странице
        tasks = Task.objects.all()
        context = {'tasks': tasks}
        context = {'tasks': tasks, 'form': TForm()}
        return render(request, 'kalendar/tasks.html', context)
    if request.method == 'POST':
        #Регистрация
        task = Task(author=request.user)
        form = TForm(data=request.POST, instance=task)
        if form.is_valid():
            form.save()
            messages.success(request, 'Задача поставлена')
            return redirect('tasks')
        else:
            messages.success(request, 'Где-то проблема, поищи ошибку')
            return redirect('tasks')

Ответы

▲ 0Принят

Нашла ответ через 5 мин -_- после публикации Нужно было вставить: form.instance.author = self.request.user

Вот полный код views.py

def tasks(request):
    if request.method == 'GET':
        tasks = Task.objects.all()
        context = {'tasks': tasks}
        context = {'tasks': tasks, 'form': TForm()}
        return render(request, 'kalendar/tasks.html', context)
    if request.method == 'POST':
        task = Task(author=request.user)
        form = TForm(data=request.POST, instance=task)
        if form.is_valid():
            form.instance.author = request.user #Обращение к форме и изменение поля
            form.save()
            messages.success(request, 'Задача поставлена')
            return redirect('tasks')
        else:
            messages.success(request, 'Где-то проблема, поищи ошибку')
            return redirect('tasks')