У меня проблема с динамическим заполнением данных формы на основе предыдущего выбранного поля. В моем случае у меня есть две модели, одна из которых содержит разные типы членства в разных клубах. Затем у меня есть другая модель, которая обрабатывает регистрации для отдельных клубов.
Моя проблема - когда конечный пользователь готов подписать форму рендеринга (я уже отфильтрую участников по клубу, который они первоначально выбрали), но мне нужно отфильтровать цену по выбранному членству (внешний ключ) Модель игрока.
Ниже моя модель для типов членства:
Модель для хранения доступных клубов членства, чтобы участники могли выбирать и платить на странице регистрации
class ClubMemberships(models.Model):
club_id = models.ForeignKey(ClubInfo, on_delete=models.CASCADE)
title = models.CharField(max_length=30, default='')
price = models.DecimalField(default=0.00, max_digits=6, decimal_places=2)
description = models.TextField()
def __str__(self):
return self.title
Вот модель для регистрации:
Модель для хранения информации об игроке, которая будет использоваться для регистрации членства
class Player(models.Model):
club_id = models.ForeignKey(ClubInfo, on_delete=models.CASCADE)
membership_title = models.ForeignKey(ClubMemberships, on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10, decimal_places=2)
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
dob = models.DateField(max_length=8)
email = models.EmailField(max_length=50)
phone = models.CharField(max_length=12)
mobile = models.CharField(max_length=15)
emergency_contact_name = models.CharField(max_length=40)
emergency_contact_mobile = models.CharField(max_length=15)
address1 = models.CharField(max_length=30)
address2 = models.CharField(max_length=30, default='')
address3 = models.CharField(max_length=30, default='')
town = models.CharField(max_length=30)
county = models.CharField(max_length=30)
country = models.CharField(max_length=30)
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
Форма для регистрации игрока:
Форма для принятия реквизитов для регистрации
class PlayerRegistrationForm(forms.ModelForm):
class Meta:
model = Player
fields = '__all__'
labels = {
'dob': 'Date of Birth'
}
widgets = {
'dob': forms.DateInput(attrs={'id': 'datepicker'})
}
def __init__(self, *args, **kwargs):
super(PlayerRegistrationForm, self).__init__(*args, **kwargs)
self.fields['club_id'].widget = forms.HiddenInput()
def load_price(self, request):
membership = request.GET.get('membership_title')
title = ClubMemberships.objects.filter(title=membership)
self.fields['price'].queryset = ClubMemberships.objects.filter(price=title.price)
load_price - пример того, что я пытаюсь выполнить, но не могу заставить его работать. Я хочу, чтобы форма проверяла членство, выбранное в форме, затем отфильтровывала цену этого членства и отображала ее в форме.
Вот моя форма в браузере:
форма
Буду очень признателен за любую помощь, поскольку я не могу включить PayPal, пока не смогу правильно отобразить цену.
Спасибо