Excluir el campo de un formulario al llamarlo

Archivada en Desarrollo

Excluir el campo de un formulario al llamarlo

Este es mi problema. Hice un formulario para editar los usuarios y al mismo tiempo crear un registro en otro modelo. Es que no encontré otra forma para manejar los permisos de la aplicación metas del Cuadro de Mando.

Este es el modelo para los usuarios que usan las metas:

class Pipol(models.Model):
    perfil = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='pipol', editable=False)
    sitio = models.IntegerField(choices=SITIO)
    puesto = models.CharField (choices=PUESTOS, max_length=5)
    activo = models.BooleanField(default=True)

    def __unicode__ (self):
        return str(self.perfil)

    def get_sitio (self):
        return SITIO[self.sitio][1].upper()

    def is_mspe(self):
        if self.puesto == "RA":
            return False
        else:
            return True

    class Meta:
        verbose_name = 'Perfil'
        verbose_name_plural = 'Perfiles'

Como pueden ver, usa una clave foránea que enlaza a los usuarios del sistema para controlar grupos y permisos.

Entonces, cuando se trata de agregar a los usuarios uso un formulario que toma ciertos campos para el modelo django.contrib.auth.models.Usersy estos campos en este modelo Pipol.

Entonces debo agregar un constructor para que cuando se trate de agregar a un usuario se agreguen los campos password1 y password2 y cuando se edite, estos campos se exluyan.

El constructor es como esto:

def __init__ (self, *args, **kwargs):
    edit = kwargs.pop('edit', None)
    super (PipolForm, self).__init__(*args, **kwargs)
    if edit:
        del self.fields['password1']
        del self.fields['password2']

De forma que tendría que llamar a mi formulario el parámetro con_clave=False para que no aparezcan las contraseñas.

La llamada en la vista es como sigue:

form = PipolForm (request.POST, initial=inital, edit=True)

No funciona como yo quiero, así que seguiré investigando.

Javier Sanchez Toledano

Soy programador en Django+Python y WordPress. Auditor líder certificado en la norma ISO 9001:2008. Fotógrafo aficionado.
Redes Sociales:

Tlaxcala, México

Comentarios