Как мне указать набор запросов к виджету формы django в общем представлении обновлений

#python #django #forms

#python #django #формы

Вопрос:

Моя модель :

 class TarifGe(models.Model):
    mise_a_disposition = models.ForeignKey(MiseADisposition)
    tarif_son = models.ForeignKey("TarifGe", on_delete=models.CASCADE, null=True, default=None, blank=True)
  

Мой взгляд :

 class TarifGeUpdate(LoginRequiredMixin, UpdateView):
    model = TarifGe
    template_name = "tarifs_form.html"
    fields = ['tarif_son',]

  

tarif_fils — это объект, связанный с тарифом (отец -> Сын)

Я хотел бы отфильтровать начальные значения виджета поля tarif_son, чтобы иметь только объекты TarifGe, которые имеют одно и то же поле mise_a_disposition, вместо всех объектов TarifGe.

Где и как я могу указать набор запросов для виджета поля «tarif_son»?

Заранее спасибо за вашу помощь.

Ответ №1:

Вы можете переопределить .get_form(…) метод [Django-doc]:

 class TarifGeUpdate(LoginRequiredMixin, UpdateView):
    model = TarifGe
    template_name = "tarifs_form.html"
    fields = ['tarif_son',]

    def get_form(self, *args, **kwargs):
        form = super().get_form(*args, **kwargs)
        form.fields['tarif_son'].queryset = TarifGe.objects.filter(
            mise_a_disposition=self.object.mise_a_disposition
        )
        return form  

Комментарии:

1. Большое вам спасибо! Я пробовал это, но забыл «* аргументы, ** kwargs» в function и super(). Это решило мою проблему!