からのデータを使用して動的にDjangoのフォームを埋める:次のように私は、Djangoのビューを持っているテンプレート
@login_required(login_url="login/")
def review(request):
table = DummyTable(DummyModel.objects.all())
form = DummyForm()
return render(request, 'review.html', {'reviews': table, 'DummyForm': form})
、これは問題には関係ありませんが、私は、(django-crispy-form
あるデフォルトDummyForm
を渡しています思考)、私はそれがユーザーがクリックするレコードに応じてそれを設定する必要があります。今
from .models import DummyModel
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, ButtonHolder, Submit
from django.forms import ModelForm
class DummyForm(ModelForm):
class Meta:
model = DummyModel
fields = ['name', 'description', 'time_points']
def __init__(self, *args, **kwargs):
super(DummyForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-sm-2'
self.helper.field_class = 'col-sm-10'
self.helper.layout = Layout(
Field('name'),
Field('description'),
Field('time_points'),
ButtonHolder(
Submit('submit', 'Submit', css_class='button white')
))
、私は、ユーザーが特定のリンクをクリックすると、私は形でレンダリングするレコードの主キーを受信したときに呼び出されるjavascript関数を持っている:フォーム自体はように見えます。現在のところ、それは以下の通りである。
<div id="dialog" class="modal" title="Edit" style="display:none">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<!-- Can I pass the primary key variable here??? -->
{% crispy DummyForm %}
</div>
</div>
</div>
</div>
私は空のフォームが画面に表示されてい除き、すべてこれが正常に動作します:
この機能をJS<script>
function EditDialog(pk) {
// Currently doing nothing with the primary key
// Is there a way to initialise the form with data using this key?
$("#dialog").modal({width: 500, height: 500});
return false;
}
</script>
は、として、フォームを開始します。どのようにJS関数の主キーによって与えられたレコードにフォームをバインドできますか?
通常、ビューで私は、次の操作を行うことができます。
# As an example, just bind to the record with primary key=1
rec = DummyModel.objects.filter(pk=1).first()
form = DummyForm(model_to_dict(rec))
だから、方法で私は私のテンプレート内の類似した何かをする必要があります。
このAJAXソリューションを教えていただきありがとうございます。これは全く新しい世界です! – Luca