#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(). Это решило мою проблему!