我是Django的新手,我想使用django crispy-forms更改输入字段类型
MODEL
class Config(models.Model):
id_proveedor = models.ForeignKey(Proveedor,db_column='id_proveedor', primary_key=True)
d_recepcion = models.IntegerField(blank=True, null=True, verbose_name='recepcion')
d_carga_archivo = models.IntegerField(blank=True, null=True, verbose_name='Carga de Archivo')
d_conciliacion = models.IntegerField(blank=True, null=True, verbose_name='Conciliacion')
d_envio_conci = models.IntegerField(blank=True, null=True, verbose_name='Envio Conciliacion')
d_repro_completo = models.IntegerField(blank=True, null=True, verbose_name='Reproceso')
d_acepta = models.IntegerField(blank=True, null=True, verbose_name='Aceptacion')
d_gen_certificado = models.IntegerField(blank=True, null=True, verbose_name='Certificado')
d_entrega_certificado = models.IntegerField(blank=True, null=True, verbose_name='Entrega Cetificado')
class Meta:
managed = False
db_table = 'mpc_configuracion'
FORM
class ConfigForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(ConfigForm,self).__init__(*args,**kwargs)
self.helper = FormHelper(self)
self.helper.layout = Layout(
Field('id_proveedor',
readonly = True
),
Fieldset('Configuracion Proveedor',
'd_recepcion',
'd_carga_archivo',
'd_conciliacion',
'd_envio_conciliacion',
'd_repro_completo',
'd_acepta',
'd_gen_certificado',
'd_entrega_certificado',
Submit('save','Grabar')
)
)
class Meta:
model = Config
VIEW(edit form view)
def configView(request):
pk = request.GET.get('idprov')
if request.method == 'POST':
c = Config.objects.get(id_proveedor=pk)
form = ConfigForm(request.POST, instance=c)
if form.is_valid():
form.save()
return HttpResponseRedirect('/monitor/')
else:
c = Config.objects.get(id_proveedor=pk)
form = ConfigForm(instance=c)
return render_to_response('config.html',{'form':form},context_instance=RequestContext(request))
您可以在我的模型中看到字段id_proveedor是另一个模型的外键。当我渲染表单时,字段id_proveedor使用带有提供者名称的下拉(选择小部件)(proveedores)。在新的配置表单中看起来很好,但在编辑配置表单中,我需要在Label中显示提供程序的名称而不是select小部件。
我尝试将窗口小部件类型更改为标签,并且窗体显示id_proeedor(1,2等)的值,而不是提供者的名称,如果我将select小部件呈现为readonly,则窗口小部件始终工作,用户如果能够使用它,就像我没有使用readonly属性。
我需要在标签中的编辑配置表单中显示提供者的名称。
我不知道是否需要创建一个自定义小部件,或者有一种方法可以使用crispy-forms的帮助程序或者如果我需要更改我的视图。
请提出任何建议
感谢提前
P.D。:我的另一个模型是一个简单的模型,有两个字段“id_proveedor”(整数和主键)和“provider_name”(字符串长度= 50)