Создание динамического c поля выбора в Django формах на основе представления - PullRequest
0 голосов
/ 22 апреля 2020

Я застрял на некоторое время над этой довольно простой, но сложной задачей. На самом деле немного сложно описать проблему, поэтому, надеюсь, вы обнажитесь со мной.

У меня есть 3 модели:

class Subject(models.Model):
    batch = models.CharField(choices=LEVEL_CHOICES, max_length=2)
    subject_name = models.CharField(max_length=50)
    ... 

class StudentRegistration(models.Model):
    subject = models.ManyToManyField(Subject)
    ...


class Season(models.Model):
    season = models.CharField(max_length=2, primary_key=True)
    subject = models.ManyToManyField(Subject)
    running = models.BooleanField(default=False)

Я хочу создать форму StudentRegistration для определенный Subject на определенный Season. Для этого я сначала создал форму, где пользователь выбирает Season и пакет. Вид выглядит следующим образом:

def admission(request):
    if request.method == 'POST':
        form = DeterminingForm(request.POST)

        if form.is_valid():
            selected_season = form.cleaned_data['season']
            selected_batch = form.cleaned_data['batch']
    form = DeterminingForm()

После этого я хочу создать форму StudentRegistration, где у пользователя будет возможность выбрать темы, которые доступны для этого selected_season, и selected_batch. Я создал ModelForm для этого, но я не знаю, как запросить базу данных, взяв значение из представления в форму, и отобразить доступные параметры в поле выбора (или любом другом применимом поле). В настоящее время все, что у меня есть для этого - это форма:

class StudentRegistrationForm(forms.ModelForm):
    class Meta:
        model = StudentRegistration
        fields = '__all__'

Я не знаю, что и как делать, любая помощь будет высоко оценена!

...