Я пытаюсь создать форму, в которой одно поле является полем ModelChoice. Я пытаюсь заполнить это поле объектами из другой модели. Я столкнулся с проблемой, поскольку мне нужно, чтобы текущий зарегистрированный пользователь в форме фильтровал набор запросов. Вот 2 модели
class UserExercises(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
Muscle = models.ForeignKey(Muscle, on_delete=models.CASCADE)
class Exercise(models.Model):
exercise = models.ForeignKey(UserExercises, on_delete=models.CASCADE)
weight = models.DecimalField(max_digits=6, decimal_places=3)
reps = models.PositiveIntegerField(validators=[MaxValueValidator(100)])
difficulty = models.CharField(max_length=30)
date = models.DateTimeField(default=timezone.now)
user = models.ForeignKey(User, on_delete=models.CASCADE)
А вот моя форма
class AddExerciseForm(forms.Form):
exercise = forms.ModelChoiceField(queryset=UserExercises.objects.filter(user=1))
class Meta:
model = Exercise
fields = ['exercise', 'weight', 'reps', 'difficulty']
Как вы можете видеть, я сейчас жестко кодирую фильтр в ModelChoiceField, но хочу заменить его на текущие пользователи Id. Есть ли в любом случае об этом. Я новичок в django, поэтому любая помощь будет оценена.
My View
@login_required
def add_exercise_view(request):
if request.method == 'POST':
user_id = request.user.id
form = AddExerciseForm(user_id=user_id)
if form.is_valid():
form.save()
return redirect('myfit-home')
else:
form = AddExerciseForm()
return render(request, 'users/register.html', {'form': form})