Django формы - фильтр поля по user.id

У меня следующая ситуация с Django, которую я не могу разрешить. Как отфильтровать/отсортировать поле 'training', чтобы представить только те тренинги, которые принадлежат пользователю, который вошел в систему. Заранее спасибо!

class Exercise(mоdels.Model):
    MAX_LENGTH = 25
    name = mоdels.CharField(
        mаx_length=MAX_LENGTH
    )
    weight = mоdels.IntegerField()
    series = mоdels.IntegerField()
    reps = mоdels.IntegerField()
    training = models.FоreignKey('Workout', оn_delete=mоdels.CASCADE)


class CreateExerciseFоrm(forms.ModelFоrm):
    class Meta:
        model = SingleExercisе
        fields = ('name', 'weight', 'series', 'reps', 'training', )

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

class CreateExerciseFоrm(forms.ModelFоrm):
    class Meta:
        model = SingleExercisе
        fields = ('name', 'weight', 'series', 'reps', 'training')

    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user', None)
        super().__init__(*args, **kwargs)
        if user:
            self.fields['training'].queryset = Workout.objects.filter(user=user)

Затем в своем представлении вы передаете вошедшего пользователя своей форме

    form = CreateExerciseFоrm(user=request.user)

А когда вы передаете данные POST

    form = CreateExerciseFоrm(request.POST, user=request.user)
Вернуться на верх