Django — заполните поле на основе того, что пользователь вводит в другое поле.Python

Программы на Python
Ответить
Anonymous
 Django — заполните поле на основе того, что пользователь вводит в другое поле.

Сообщение Anonymous »

Я пытаюсь автоматически заполнить поле на основе того, что пользователь вводит в другое поле. Ниже вы увидите, что есть поле выбора под названием «typeofacct» и еще одно поле под названием «mintoopen». Один из вариантов «typeofacct» — «Повседневный бизнес», также есть еще 4 варианта. Например, если пользователь выбирает «Повседневный бизнес» в качестве параметра для поля «typeofacct», я бы хотел, чтобы поле «mintoopen» было заполнено значением «100 долларов» (строка). Ниже мои файлы:
forms.py

Код: Выделить всё

class WaiveForm(forms.Form):

header = forms.CharField(
widget=HeaderWidget(attrs={'class': 'my-css-class'}),
initial='Fee Waive Worksheet',
required=False,
label=''
)

businessname = forms.CharField(max_length=50, label='Business Name')
acctnum = forms.IntegerField(label='Business Account Number')
annualreviewdt = forms.DateField(label='Annual Review Date', initial=(today + relativedelta(years=1)).strftime('%m/%d/%Y'), disabled=True, required=False)
effectivemonth = forms.ChoiceField(choices=effectiveMonthChoice, label='Effective Month')
typeofacct = forms.ChoiceField(choices=typeOfAcctChoice, label='Type of Account')

# Table
mintoopen = forms.ChoiceField(required=False, choices=minToOpenOptions)

class SnippetForm(forms.ModelForm):

class Meta:
model = Snippet
fields = ('businessname', 'acctnum', 'annualreviewdt', 'effectivemonth', 'typeofacct', 'mintoopen')

models.py

Код: Выделить всё

class Snippet(models.Model):

businessname = models.CharField(max_length=50)
#acctNum = models.IntegerField(max_length=17)
acctnum = models.PositiveIntegerField(primary_key=True, validators=[MaxValueValidator(99999999999999999)])
annualreviewdt = models.DateTimeField(default=today)
effectivemonth = models.CharField(choices=effectiveMonthChoice, max_length=2)
typeofacct = models.CharField(choices=typeOfAcctChoice, max_length=1)

# Table
mintoopen = models.CharField(max_length=20, blank=True, choices=minToOpenOptions, default=typeofacct.formfield())

def __str__(self):
return self.businessname, self.acctnum, self.annualreviewdt, self.effectivemonth, self.typeofacct, self.mintoopen

def mintoopen_func(self):
return minToOpenArray[int(self.typeofacct)]

def save(self, *args, **kwargs):
if not self.mintoopen:
self.mintoopen = self.mintoopen_func()
super(Snippet, self).save(*args, **kwargs)
views.py

Код: Выделить всё

def waive(request):

if request.method == 'POST':
form = WaiveForm(request.POST)
if form.is_valid():

businessname = form.cleaned_data['businessname']
acctnum = form.cleaned_data['acctnum']
annualreviewdt = form.cleaned_data['annualreviewdt']
effectivemonth = form.cleaned_data['effectivemonth']
typeofacct = form.cleaned_data['typeofacct']

#mintoopen = form.cleaned_data['mintoopen']
mintoopen = minToOpenArray[int(form.cleaned_data['typeofacct'])]

print('Business Name: ', businessname,
'\nBusiness Account Number: ', acctnum,
'\nAnnual Review Date: ', annualreviewdt.strftime('%m/%d/%Y'),
'\nEffective Month: ', effectivemonth,
'\nType of Account: ', typeofacct,
'\nMin to Open: ', mintoopen)

form = WaiveForm()
return render(request, 'forms.html', {'form': form})

def snippet_detail(request):

if request.method == 'POST':
form = SnippetForm(request.POST)
if form.is_valid():
form2 = form.save(commit=False)

form.save()

form = SnippetForm()
return render(request, 'forms.html', {'form': form})
Как вы можете видеть в файле models.py, я попытался переопределить метод save(), но не знаю, как это реализовать. Я также пытался использовать save(commit=False). Опять же, я хотел бы настроить форму, как показано ниже, за исключением случаев, когда выбран «Повседневный бизнес» (или какой-либо другой вариант), поле «mintoopen» автоматически заполняется соответствующим значением.
введите здесь описание изображения

Подробнее здесь: https://stackoverflow.com/questions/776 ... ther-field
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»