1
我有一个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})
我传递一个默认DummyForm
这是一个django-crispy-form
(虽然这并不重要的问题,我认为),我需要填充它取决于用户点击的记录。窗体本身看起来:
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函数。目前,如下:
<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函数启动形式为:
<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函数中由主键给出的记录。
通常,在视图中,我可以做到以下几点:
# 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