Proyecto inventario con django

73 views
Skip to first unread message

Fiorella Cassina

unread,
Feb 15, 2023, 12:36:31 PM2/15/23
to Django-es
Hola, que tal? necesito hacer un proyecto sobre un inventario para una clinica media con Django.  No se me ocurre como dar de baja / alta un producto. 
Recien estoy comenzando con todo esto y no se me ocurre como hacerlo. Alguien me puede dar una mano? desde ya, muchas gracias.

Rafael E. Ferrero

unread,
Feb 16, 2023, 6:27:31 AM2/16/23
to djan...@googlegroups.com
lo más rápido es prototipar con Django Admin

Rafael E. Ferrero


El mié, 15 feb 2023 a las 14:36, Fiorella Cassina (<fiorell...@gmail.com>) escribió:
Hola, que tal? necesito hacer un proyecto sobre un inventario para una clinica media con Django.  No se me ocurre como dar de baja / alta un producto. 
Recien estoy comenzando con todo esto y no se me ocurre como hacerlo. Alguien me puede dar una mano? desde ya, muchas gracias.

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/django-es/cb4df38a-5f24-498d-b896-a01c3f5c06b9n%40googlegroups.com.

Fiorella Cassina

unread,
Feb 16, 2023, 3:02:44 PM2/16/23
to Django-es
tendria que hacer esto pero no se como pasarlo a codigo, me podrias dar una mano?
stock.jpg

Alberto Paparelli

unread,
Feb 17, 2023, 4:25:55 AM2/17/23
to djan...@googlegroups.com
Hola, El UML que pasaste lo hiciste vos? o sacaste un ejemplo de internet? Pregunto porque en la primer pregunta no especificas que son varios depositos.
Y en el caso de que no tengas que hacerlo como el UML que pasas (sin deposito), es mucho mas simple el modelo.

Modelo simple:

from django.db import models

class Producto(models.Model):
nombre = models.CharField(max_length=100)
descripcion = models.TextField()
cantidad_disponible = models.IntegerField()
precio = models.DecimalField(max_digits=10, decimal_places=2)
disponible = models.BooleanField(default=True)

def __str__(self):
return self.nombre


Ahora, para los modelos que pasas, creo que faltaría el atributo cantidad en InsumoDeposito. 
Para el código, aproveche a probar chatGPT y el resultado es bastante bueno para arrancar a modificar desde ahi.

Le dije a chatGPT:
crear modelos de django de la siguiente manera.

Modelo Insumo
Atributos:nombre, categoria, marca, punto_pedido
metodos: get_stock() (Trae la suma de stock de todos los InsumoDeposito relacionados)

Modelo InsumoDeposito
Atributos: Insumo (fk a insumo), deposito (fk a deposito), cantidad

Modelo Deposito
Atributos: Nombre
Métodos: add_stock(), remove_stock(), get_stock()

La respuesta fue la siguiente:
Claro, te muestro cómo puedes crear los modelos de Django para representar los conceptos que mencionaste:
from django.db import models

class Insumo(models.Model):
nombre = models.CharField(max_length=100)
categoria = models.CharField(max_length=100)
marca = models.CharField(max_length=100)
punto_pedido = models.IntegerField()

def get_stock(self):
# Retorna la suma de stock de todos los InsumoDeposito relacionados
return sum([insumo_deposito.cantidad for insumo_deposito in self.insumodeposito_set.all()])

class InsumoDeposito(models.Model):
insumo = models.ForeignKey(Insumo, on_delete=models.CASCADE)
deposito = models.ForeignKey('Deposito', on_delete=models.CASCADE)
cantidad = models.IntegerField()

class Deposito(models.Model):
nombre = models.CharField(max_length=100)

def add_stock(self, insumo, cantidad):
# Añade cantidad al stock del insumo en este deposito
insumo_deposito, created = InsumoDeposito.objects.get_or_create(insumo=insumo, deposito=self)
insumo_deposito.cantidad += cantidad
insumo_deposito.save()

def remove_stock(self, insumo, cantidad):
# Remueve cantidad del stock del insumo en este deposito
insumo_deposito, created = InsumoDeposito.objects.get_or_create(insumo=insumo, deposito=self)
insumo_deposito.cantidad -= cantidad
insumo_deposito.save()

def get_stock(self, insumo=None):
# Retorna el stock de todos los insumos o de un insumo específico si se especifica
insumos_deposito = self.insumodeposito_set.all()
if insumo:
insumos_deposito = insumos_deposito.filter(insumo=insumo)
return sum([insumo_deposito.cantidad for insumo_deposito in insumos_deposito])



El modelo Insumo tiene los atributos nombre, categoria, marca y punto_pedido, además del método get_stock(), que retorna la suma de stock de todos los InsumoDeposito relacionados con este insumo.

El modelo InsumoDeposito tiene los atributos insumo (una clave foránea a un objeto Insumo), deposito (una clave foránea a un objeto Deposito) y cantidad, que indica la cantidad de este insumo en el depósito correspondiente.

El modelo Deposito tiene el atributo nombre, además de los métodos add_stock(), remove_stock() y get_stock(). El método add_stock() añade una cantidad especificada de un insumo específico al depósito, mientras que el método remove_stock() remueve una cantidad especificada de un insumo específico del depósito. El método get_stock() retorna el stock total de todos los insumos o el stock de un insumo específico si se especifica.
---

Espero que te sirva para arrancar.

Saludos






Fiorella Cassina

unread,
Feb 17, 2023, 8:31:22 AM2/17/23
to Django-es
Hola, Buen día. Primero que nada, mil gracias, la verdad que me re salvaste y me ayudo muchisimo para comprender mas el codigo. 
El UML me lo pasaron, eso es lo que tenia que realizar, como recien estoy comenzando con Django, habia entendido otra cosa. 
Por lo que vi esta muy bien, un exito  chatGPT. Nuevamente muchas gracias por la ayuda.

saludos!
Reply all
Reply to author
Forward
0 new messages