Как фильтровать формы в django?

Я пытаюсь сделать рейтинговую систему с помощью django. Итак, у меня есть:

class Region(models.Model):
    name = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50, unique=True)
    
    def __str__(self):
        return self.name

class Salesman(models.Model):
    region = models.ForeignKey(Region,
                               related_name='region',
                               on_delete=models.CASCADE)
    name = models.CharField(max_length=40)
    surname = models.CharField(max_length=40)
    
    def __str__(self):
        return self.name
    

class Rating(models.Model):
    RATING_CHOICES = [(i, str(i)) for i in range(1,6)]
    salesman = models.ForeignKey(Salesman,
                                 related_name='salesman',
                                 on_delete=models.CASCADE)
    region = models.ForeignKey(Region,
                               related_name='regions',
                               on_delete=models.CASCADE)
    phone = models.CharField(max_length=15, blank=True)
    rating = models.IntegerField(choices=RATING_CHOICES, blank=False)
    sent_time = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        return f"{self.rating}"

Это моя модель. На первой странице пользователь должен выбрать регион, после чего должна открыться форма с полями продавец, телефон и рейтинг. Причем поля продавец должны показывать тех продавцов, которые работают в выбранном регионе.

Мой файл forms.py находится здесь:

class RateAddForm(ModelForm):
    class Meta:
        model = Rating
        exclude = ('region',)
    def __init__(self, region=None, **kwargs):
        super(RateAddForm, self).__init__(**kwargs)
        if region:
            self.fields['salesman'].queryset = Salesman.objects.filter(region=region)

Но все равно он показывает мне всех продавцов, независимо от их региона.

Мой views.py здесь, я не могу взять регион, где я должен правильно добавить регион?:

def report_add(request, region_slug):
    region = get_object_or_404(Region, slug=region_slug)
    if request.method == 'POST':
        form = RateAddForm(request.POST)
        if form.is_valid():
            message = "Thanks!"
            form.save()
            return HttpResponse(message)
        else:
            form = RateAddForm()
    else:
        form = RateAddForm(request.POST)
    return render(request,
                  'account/report.html',
                  {'form': form})

Есть ли что-то, что я упустил, или вы можете посоветовать какой-нибудь хороший метод? Заранее спасибо за помощь! :)

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