Foros del Web » Programando para Internet » Python »

Como usar una función init en un formulario?

Estas en el tema de Como usar una función init en un formulario? en el foro de Python en Foros del Web. Bueno estoy tratando de hacer un formulario el cual llene la información de las tiendas que posee una empresa y hasta ahora tengo lo siguiente ...
  #1 (permalink)  
Antiguo 29/01/2013, 11:15
 
Fecha de Ingreso: enero-2011
Ubicación: Valledupar, Colombia
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Como usar una función init en un formulario?

Bueno estoy tratando de hacer un formulario el cual llene la información de las tiendas que posee una empresa y hasta ahora tengo lo siguiente en el views.py

Código:
@login_required
def store(request, id_empresa, id_store):
    usuario = User(request.user)
    empresa, modif = Empresa(usuario, id_empresa)

    modif = 'n'
    if id_store:
        try:
            store = models.Store.objects.filter(id=id_store,
                            empresa=empresa)[0]
            modif = 'm'
        except IndexError:
            store = models.Store()
    else:
        store = models.Store()

    if request.method == 'POST':
        form = forms.StoreForm(request.POST,
                    request.FILES,
                    instance=store)
        if form.is_valid():
            form.save()
            return redirect('store_list', id_empresa=id_empresa)
    else:
        form = forms.StoreForm(empresa, usuario, instance=store)
    return render_to_response('main/store_form.html',
                {'titulo': 'DATOS de Sucursal',
                'form': form,
                'modif': modif,
                'id_empresa': id_empresa,
                'id_store': id_store},
                context_instance=RequestContext(request)
                )
y en mi forms.py tengo esto:

Código:
class StoreForm(ModelForm):
    class Meta:
        model = Store
        exclude = ['empresa']
Pero me arroja el siguiente error: store() takes exactly 3 arguments (1 given), sé que no estoy pasando las variables suficientes en el forms.py, eso se hace con una función init, pero no sé como indicarle los parámetros en esa función. Le agradezco una mano, saludos
  #2 (permalink)  
Antiguo 29/01/2013, 11:32
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Como usar una función init en un formulario?

El error es claro, a la función store le estas pasando solamente un argumento pero espera recibir tres.

¿Cual es la función store? Obviamente tu vista.

Código Python:
Ver original
  1. def store(request, id_empresa, id_store):

Checa tu URLconf probablemente no estas capturando o pasando las variables adecuadas.
  #3 (permalink)  
Antiguo 29/01/2013, 11:49
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Como usar una función init en un formulario?

Parece que el parámetro id_store quieres que sea opcional (por la línea 7), tendrías que especificarlo:

Código Python:
Ver original
  1. def store(request, id_empresa, id_store=None):

Y entonces el urlconf puedes hacer algo como esto:

Código Python:
Ver original
  1. url(r'^store/(?P<id_empresa>[^/]+)/$', 'app.views.store'),
  2. url(r'^store/(?P<id_empresa>[^/]+)/(?P<id_store>[^/]+)/$', 'app.views.store')

Saludos
__________________
Grupo Telegram Docker en Español

Etiquetas: django, forms
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:11.