Hello World!
Подскажите, пожалуйста, как вывести поле ForeignKey в шаблон с определённым условием?
Всё происходит в Django 1.11.5.
Имею вот такую модель:
# ./citizenship/models.py
class Citizenship(models.Model):
name = models.CharField(_('Country name'), max_length=55, unique=True)
is_active = models.BooleanField(default=True)
is_available_for_order = models.BooleanField(default=True)
class CitizenshipInvitationPrice(models.Model):
country = models.ForeignKey(Citizenship, on_delete=models.CASCADE)
type = models.CharField(_('Type'), max_length=25, default=None)
cost = models.IntegerField(_('Cost, RUR'), default=0)
Подключаю её к другой модели:
# ./visa/models.py
class TouristVisaSupport(models.Model):
citizenship = models.ForeignKey(Citizenship, on_delete=None)
...
Которая имеет вот такую вьюшку:
# ./visa/views.py
class TouristVisaSupportView(View):
template_name = 'visa/index.html'
form_class = TouristVisaSupportForm
def get(self, request):
form = self.form_class()
return render(request, self.template_name, {'form': form})
Виджет формы для этого поля:
# ./visa/forms.py
class TouristVisaSupportForm(forms.ModelForm):
class Meta:
model = TouristVisaSupport
widgets = {
'citizenship': forms.Select(
attrs={
'class': 'citizenship-select',
},
),
...
В шаблоне вывожу, как обычно:
<!-- ./templates/visa/index.html -->
{{ form.as_p }}
...
Хотелось бы во вьюшке сразу же фильтровать значения из ForeignKey поля
citizenship
по, например, значению
type
из класса
CitizenshipInvitationPrice
. То есть, из всех значений, попадёт в select только то, которое удовлетворяет условию фильтра.
Подскажите, пожалуйста, как это можно сделать?