Как я могу фильтровать 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})