Ayuda

10 views
Skip to first unread message

Jhonny Lopez

unread,
May 6, 2013, 11:14:36 AM5/6/13
to djan...@googlegroups.com
Hola, solo nuevo en django y estoy realizando un pequeño proyecto y tengo dudas.

Necesito realizar un registro, la clase "UsoEquipos" es un formulario del cual algunos campos seran tomados por otras tablas en la base de datos. Pero al momento de revisar los registros en la base de datos solo guarda los datos de la clase "UsoEquipos" y no en las otras tablas, espero puedan ayudarme.. Gracias..

class UsoEquipos(models.Model):
    ci = models.CharField(max_length=12)
    nombre = models.CharField(max_length=40)
    departamento = models.CharField(max_length=50)
    id_equipos = models.CharField(max_length=5)
    tiempo_uso = models.DateTimeField()

class Personal(models.Model):
    ci_p = models.ForeignKey(UsoEquipos, related_name='ci_p')
    nombre_p = models.ForeignKey(UsoEquipos, related_name='nombre_p')
    departamento_p = models.ForeignKey(UsoEquipos, related_name='departamento_p')
class Equipos(models.Model):
    id_equipos_u = models.ForeignKey(UsoEquipos, related_name='id_equipos_u')
    aplicaciones = models.CharField(max_length=100)

(La BD esta hecha en mysql.)

Milton Mazzarri

unread,
May 6, 2013, 12:46:59 PM5/6/13
to djan...@googlegroups.com
2013/5/6 Jhonny Lopez <jhjo...@gmail.com>
Hola, solo nuevo en django y estoy realizando un pequeño proyecto y tengo dudas.

Necesito realizar un registro, la clase "UsoEquipos" es un formulario del cual algunos campos seran tomados por otras tablas en la base de datos. Pero al momento de revisar los registros en la base de datos solo guarda los datos de la clase "UsoEquipos" y no en las otras tablas, espero puedan ayudarme.. Gracias..


Jhonny, te recomiendo leer en detalle la documentación asociada a Modelos[1] en Django, tienes un confusión, el uso del ForeignKey no es para copiar datos de unos campos de una tabla a otra, es una relación que une a muchos objetos contra uno, esto evita precisamente la redundancia de datos, a la postre esto te ayuda en el mantenimiento de tu base de datos.

Con esto quiero decir lo siguiente:

class Department(models.Model):
name = models.CharField(max_length=24)
description = models.TextField()

def __unicode__(self):
return self.name

class Employee(models.Model):
first_name = models.CharField(max_length=24)
last_name = models.CharField(max_length=24)
employee_number = models.PositiveIntegerNumber()
department = models.ForeignKey(Department)

def __unicode__(self):
return "%s, %s" % (last_name, first_name)

Si un Empleado tiene asociado un Departamento por medio de un ForeignKey, quiere decir también que un Departamento tiene muchos Empleados pero solo un Empleado tendrá un Departamento.

Por otro lado, tu aplicación por lo que puedo entrever es el control de un stock de materiales y tracking de los mismos, aquellos por supuesto que tienen retorno a almacén, como por ejemplo, el préstamo de libros en una biblioteca. Entonces, creo que debes visualizar tus modelos de la siguiente manera:

Una Compañía tiene muchos Departamentos, que a su vez están conformados por Empleados. (Company -> Department -> Employee)

Un Item tiene sus propiedades, a la vez tienes cierta cantidad de ellos en Stock, también deberías tener un histórico de eventos por Item, en donde relaciones el Empleado que retira el Item, la fecha de retiro y el respectivo descuento en el Stock, tal vez por medio de una señal. Desconozco si vas a recomendar una fecha de retorno (como en las bibliotecas), si es así, considera la posibilidad de incorporar notificaciones (SMS, e-mail) a tu sistema. También deberías tener un sistema de alertas para indicar cuando te estás quedando sin material en Stock.

Si tus modelos comienzan a crecer, puedes analizarlos fácilmente al convertirlos a un gráfico ER, puedes leer esto[2].

NOTA FINAL: Te recomiendo unirte a Python Venezuela en [3], esta lista ha quedado como referencia y nos hemos unido a ellos.


Espero te sirva la información, 

Un saludo, feliz día,
 
Milton Mazzarri, a.k.a. [milmazz]
Usuario de GNU/Linux: #369158
http://milmazz.com.ve
Reply all
Reply to author
Forward
0 new messages