фильтр формы для текущего пользователя

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

Есть 2 модели, одна для создания списка категорий (TodoList), а вторая для создания записей в этой категории (Todo). В представлениях настроено так, что каждый пользователь может просматривать только свои записи и категории. Проблема состоит в том, что при создании записи в списке категории отображаются все категории (не только текущего пользователя). Подскажите пожалуйста как реализовать данный фильтр для текущего пользователя в формах? Или может это не в формах делается? Я не жду готового кода, мне хотя бы направить в нужном направлении, я пока не понимаю как это делается. Вот скрин на всякий случай, вдруг я неправильно изъясняюсь.

введите сюда описание изображения

models.py:

class TodoList(models.Model):
    user = models.ForeignKey(
        User, on_delete=models.CASCADE,
        null=True, blank=True
    )
    title = models.CharField(max_length=200, unique=True)

    def __str__(self):
        return self.title


class Todo(models.Model):
    user = models.ForeignKey(
        User, on_delete=models.CASCADE,
        null=True, blank=True,
    )
    todo_list = models.ForeignKey(
        TodoList, on_delete=models.CASCADE
    )
    title = models.CharField(max_length=200)
    info = models.CharField(max_length=200, blank=True)
    isCompleted = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:
        order_with_respect_to = 'user'

forms.py:

class AddListForm(forms.ModelForm):
    class Meta:
        model = TodoList
        fields = ('title',)


class AddItemForm(forms.ModelForm):
    class Meta:
        model = Todo
        fields = ('todo_list', 'title', 'info',)

views.py:

...
@login_required()
def add_item(request):
    """Создание записи в категории"""
    pathname = 'todo/create_item.html'
    form = AddItemForm(request.POST)
    if form.is_valid():
        item = form.save(commit=False)
        item.user = request.user
        item.save()
        return redirect('todo:index')
    return render(request, pathname, {'form': form})   
...

Ответы

Ответов пока нет.