在我的 django 应用程序中,我有一个 CenterModel 和一个 ProvinceModel,每个中心都有一个 Province_id 字段。我已经为 Province_id 使用 ModelSelect2Widget (django_select2) 为 Center 定义了一个表单。我想使用javascript将所选值设置为模板中的province_id字段,但以下代码不起作用:
$("#id_province_id").val(response.province_id)
$('#id_province_id').trigger('change');
但是这些行不起作用,它们没有将值设置为 Province_id 字段。相反,如果该字段具有一些先前选择的值,则“.val()”函数会清除该值。我仔细检查了一下,response.province_id 存储了一个有效的省 ID。为什么我不能为 selct 字段设置值?我正在使用 django-select2==7.7.1
class CenterModel(models.Model):
name = models.CharField(verbose_name=_("Nombre"), max_length=50, unique=True,blank=False, null=False)
province_id = models.ForeignKey("ProvinceModel", verbose_name=_("Provincia"),
blank=True, null=True, on_delete=models.SET_NULL,
related_name="centers")
municipality_id = models.ForeignKey("MunicipalityModel", verbose_name=_("Municipio"),
blank=True, null=True, on_delete=models.SET_NULL,
related_name="centers")
from django_select2.forms import ModelSelect2Widget
class CenterForm(forms.ModelForm):
class Meta:
model = CenterModel
exclude = ("id",)
widgets = {
'name':forms.TextInput(attrs={'class': 'form-control'}),
'province_id' : ModelSelect2Widget(model=ProvinceModel, queryset=ProvinceModel.objects.filter(),
search_fields=['des_prov__icontains'],
attrs={'style': 'width: 100%;'}),
'municipality_id' : ModelSelect2Widget(model=MunicipalityModel, queryset=MunicipalityModel.objects.filter(),
search_fields=['municipio__icontains'],
dependent_fields={'province_id': 'cod_prov'},
attrs={'style': 'width: 100%;'}),
}
class CenterCreateView(LoginRequiredMixin, CreateView):
model = CenterModel
context_object_name = 'center'
template_name = 'riesgo/center/center_form.html'
form_class = CenterForm
def get_success_url(self):
if self.request.method == 'POST' and "_continue" in self.request.POST:
return reverse('riesgo:center_update', kwargs={'pk': self.object.id})
elif self.request.session['referer'].get('center',False) and "centro" not in self.request.session['referer']['center']:
return self.request.session['referer'].get('center',False)
else:
return reverse_lazy("riesgo:center_detail", kwargs={"pk":self.object.id})