0

在我的 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})   
4

0 回答 0