我有一个带有两个modelchoice字段的表单来过滤折线图 第一个modelchoicefield填充了提供者列表
第二个modelchoicefield必须加载所选提供商的产品列表 机型:
class Proveedor(models.Model):
id_proveedor = models.AutoField(primary_key = True)
nombre = models.CharField(max_length=150,blank=False,null=False)
codigo_asignado = models.CharField(max_length=50,blank=False,null=False)
id_servicio = models.ForeignKey(Servicio,db_column='id_servicio',verbose_name='Servicio')
class Meta:
verbose_name_plural = "Proveedor"
def __unicode__(self):
return self.nombre
class Product(models.Model):
id_lista = models.IntegerField(primary_key=True)
fecha = models.CharField(max_length=12)
id_prov = models.ForeignKey(Proveedor,db_column='id_proveedor', verbose_name='Proveedor')
corto = models.CharField(max_length=15)
conteo = models.IntegerField()
dia = models.CharField(max_length=24)
class Meta:
managed=False
db_table='pc_v_stat_corto'
def __unicode__(self):
return self.corto
形式:
class ChartCCForm(forms.Form):
provider = forms.ModelChoiceField(queryset=Proveedor.objects.all().order_by('nombre'),label='Proveedor')
product = forms.ModelChoiceField(queryset=STAT_CORTO.objects.all(),to_field_name="corto",required=True)
def __init__(self,*args, **kwargs):
super(ChartCCForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
我的观点
def StatCortoView(request):
formulario = ChartCCForm()
prov = request.POST.get('id_proveedor')
codigo = request.POST.get('codigo')
mes = request.GET.get('mes')
try:
prov = prov
codigo = codigo
mes = mes
except ValueError:
prov = None
codigo = None
mes = None
query = STAT_CORTO.objects.filter(id_prov=prov).filter(corto=codigo)
ds = DataPool(
series=
[{'options': {
'source': query},
'terms': [
'dia',
'conteo']}
])
cht = Chart(
datasource = ds,
series_options =
[{'options':{
'type': 'line',
'stacking': False},
'terms':{
'dia': [
'conteo']
}}],
chart_options =
{'title': {
'text': 'Codigos Cortos por Dia'},
'xAxis': {
'title': {
'text': 'Fecha'}}})
return render(request,'chartcc.html',
{'grafico':cht,'form':formulario})
如何更新基于所选提供商的产品型号选择
提前致谢
答案 0 :(得分:1)
使用Django表单时,您真正想要的是什么。表单只提供制作时的选择,因此您必须为所有可能的产品提供产品查询集,然后使用javascript在前端过滤它们。