#jquery #python #django #django-forms #django-views
#jquery #python #django #django-forms #django-представления
Вопрос:
я пытался использовать jquery для загрузки формы при изменении значения выпадающего списка. он загружает форму, но после отправки данные не сохраняются в базе данных. это просто обновляет страницу.
forms.py
class accountForm(forms.ModelForm):
choice = (
('payment type','payment type'),
('paypal', 'paypal'),
('payeer', 'payeer'),
('payza', 'payza'),
('bitcoin', 'bitcoin'),
)
payment_type = forms.ChoiceField(choices = choice, widget = forms.Select(attrs = {'class':'forms-control'}))
email = forms.EmailField(widget = forms.EmailInput(attrs={'class':'form-control'}))
bitcoin = forms.CharField(widget = forms.TextInput(attrs = {'class':'form-control'}))
amount = forms.IntegerField(widget = forms.NumberInput(attrs = {'class':'form-control'}))
class Meta:
model = payments
fields = [
"payment_type",
"email",
"bitcoin",
"amount",
]
views.py
def payment(request, username):
form = accountForm(request.POST or None)
if form.is_valid():
print(form)
form.save(commit = False)
form.save()
return HttpResponseRedirect('/accounts/profile/')
context = {'form':form}
return render(request, 'payment.html', context)
payment.html
<div class="panel-body">
<div class="tab-content">
<div class="tab-pane active" id="home">
<div class="panel-body" id="panel">
<div class="form-group">
<h4 class="text-primary">Select Withdrawal Type</h4>
{{ form.payment_type }}
</div>
</div>
<div class="panel-body">
<form method="POST" id="form" enctype='multipart/form-data'>
{% csrf_token %}
</form>
</div>
</div>
</div>
</div>
jquery
<script type="text/javascript">
$('select').on('change', function (e) {
var Selected = $("option:selected", this);
var valueSelected = this.value;
console.log(valueSelected);
if (valueSelected == 'paypal') {
$("#panel").change(function (e) {
$("#panel").empty();
// $('#form').append('{% csrf_token %}');
$('#form').append('<label>email</label>');
$('#form').append('{{ form.email }}');
$('#form').append('{{ form.amount }}');
$('#form').append('<button class="btn btn-primary btn-default">submit</button>');
})
}
});
</script>
Ответ №1:
Где находится реализация для вашего forms.save()? Опишите, как функция save() реализована в модели forms. Это может быть где-то там, или если вы используете какой-либо сервис, такой как Amazon AWS и botto в качестве интерфейса, проблема также может быть в этих двух местах.
Очевидно, что вы только распечатали форму и используете HttpResponseRedirect, поэтому ваша форма печатается, а страница вашего профиля перезагружается.
Комментарии:
1. Каждая модельная форма по умолчанию имеет метод save() . и я использую этот метод save() по умолчанию.
2. и если HttpResponseRedirect работает, он перенаправил бы меня на другую страницу
3. Хорошо, можете ли вы вставить метод сохранения, который вы используете? Одна из возможностей заключается в том, что проблема может быть там.