Django - Выбор фильтра по иностранным ключам

Я хочу отфильтровать варианты, которые пользователь может выбрать в моем поле ForeignKey. В основном у меня есть ForeignKey для темы теста и фактической темы теста. Эти темы берутся из другой модели и связаны с темой. Теперь я хочу отфильтровать варианты, чтобы включить только те темы, которые связаны с выбранной темой. Возможно ли это, и если да, то каким образом?

models.py

class Test(models.Model):
    student = models.ForeignKey(Person, on_delete=models.CASCADE, blank=True, null=True)
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE, blank=True, null=True)
    thema = models.ForeignKey(Thema, on_delete=models.CASCADE, blank=True, null=True)
    school_class = models.ForeignKey(SchoolClass, on_delete=models.CASCADE, blank=True, null=True)
    grade = models.FloatField(validators=[MinValueValidator(0), MaxValueValidator(6)], blank=True, null=True)
    date = models.DateField(default=datetime.date.today)

    def save(self, *args, **kwargs):
        if not self.school_class and self.student:
            self.school_class = self.student.klasse
        return super().save(*args, **kwargs)


class Thema(models.Model):
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE, blank=True, null=True)
    thema = models.CharField(max_length=50)

Если вы используете django forms, вы можете использовать поле выбора модели. В вашем представлении вы можете установить ваш набор запросов этого поля выбора. Zo вы можете фильтровать его.

fields['your model field'].queryset = yourmodel.objects.filter(your filter parameters)

Я думаю, что в идеале вам нужно ForeignKey.limit_choices_to

Обратитесь к документации:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to

Вы можете ограничить выбор, доступный на уровне модели, что будет применяться во всем приложении django, включая формы автоматически.

Я думаю, что в методе сохранения также есть проблема. Разве вам не нужно написать имя модели внутри, как

return super(<modelName>).save(*args, **kwargs)
Вернуться на верх