Как я могу фильтровать modelformset_factory?

Я кодировал личный проект, в котором несколько пользователей могут размещать учебные видео (у каждого видео есть язык, иностранный ключ). Я пытался реализовать функцию, в которой пользователь добавляет слово к видео (или несколько слов). Но я не смог отфильтровать modelformset_factory, чтобы он показывал только слова, которые имеют тот же язык, что и видео. Например: Ниже у меня есть класс, язык которого 'inglês', я могу видеть его в de 'aula_lingua'. Но мой комбобокс показывает слова, которые имеют другие языки, например, слово 'test Norsk_noruegues', которое имеет 'noruegues' в качестве языка. Но я хотел бы отфильтровать слова и показать только слова, которые имеют тот же язык, что и видео.

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

Модели:

class Palavra(models.Model):
    palavra = models.CharField(max_length=40)
    lingua = models.ForeignKey(
        Lingua, null=True, blank=True, on_delete=models.CASCADE)

class Aula(models.Model):
    aula = models.CharField(max_length=250)
    aula_gravada = models.FileField(upload_to='aula/%Y/%m')
    lingua = models.ForeignKey(
        Lingua, blank=True, null=True, on_delete=models.CASCADE)

class AulaPalavra(models.Model):
    aula = models.ForeignKey(Aula, on_delete=models.CASCADE)
    palavra = models.ForeignKey(Palavra, on_delete=models.DO_NOTHING)

Formset:

PalavraAulaForms = modelformset_factory(
    models.AulaPalavra, fields=('palavra',), extra=1,
)

Вид:

class TesteAdicionaPalavraAula(TemplateView, DetailView):
    template_name = 'ensino/teste_add_palavra.html'
    model = Aula

    def get(self, *args, **kwargs):
        formset = PalavraAulaForms(
            queryset=Palavra.objects.filter(
                lingua=self.get_object().lingua
            )
        )

        return self.render_to_response(
            {
                'add_palavra': formset,
                'aula': self.get_object(),
            },
        )

    def post(self, *args, **kwargs):
        formset = PalavraAulaForms(
            data=self.request.POST
        )
        if formset.is_valid():
            forms = formset.save(commit=False)
            for form in forms:
                form.aula = self.get_object()
                form.save()
            return redirect(reverse_lazy('usuario:home'))

        return self.render_to_response({'add_palavra': formset})
Вернуться на верх