Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/11/2014, 02:54
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Como crear un string automático de 5 caracteres

Recibiendo la señal de antes de ser guardado, podrías en lugar de señales modificar el método save pero teniendo en cuenta que en algunas operaciones, como al trabajar con múltiples instancias, Django optimiza las consultas y no emplea el método save, tendrás que ver cual es tu caso y que se adapta mejor, de resto es solo antes de guardar si no tiene password asignada que se le genere aleatoriamente y se le asigne, y luego sea guardado:

Código:
from django.db import models
from django.db.models.signals import pre_save
from random import random

class MyModel(models.Model):
    passwd = models.CharField()

def mymodel_save_handler(sender, **kwargs):
    if sender.passwd == '':
        dic = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
        _passwd = ''
        for i in range(5):
            _passwd += dic[int(random()*len(dic))]
        sender.passwd = _passwd

pre_save.connect(mymodel_save_handler, sender=MyModel)
__________________
JHG

Última edición por jhg; 04/11/2014 a las 02:55 Razón: Corregido error en el código