es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Hola, necesito saber cómo representar un objeto con esta especificación en los modelos de Django.

Estoy creando una aplicación web basada en Django para un sistema de inventario y tengo un objeto con lo siguiente:
Tengo un Pallet que contiene:

class PalletN(models.Model):
    qr_type=models.CharField(max_length=50,blank=True,null=True)
    customer_partnum=models.CharField(max_length=50, blank=True,null=True)
    partsnum=models.CharField(max_length=50, blank=True,null=True)
    boxquantity= models.IntegerField(default='0',blank=True,null=True)
    Ponum =models.CharField(max_length=50,blank=True,null=True)
    designation= models.CharField(max_length=50, blank=True,null=True)
    production_date=models.DateField(blank=True , null=True)
    suplier=models.CharField(max_length=50,blank=True,null=True)
    shipment_date=models.DateField(blank=True, null=True)
    Customer_code= models.CharField(max_length=50,blank=True,null=True)
    Snumber= models.CharField(max_length=50,blank=True,null=True)
    status=models.CharField(max_length=20,blank=True, null=True)
    creation_date=models.DateField(auto_now_add=True)
    zone=models.ForeignKey(zone,on_delete=models.CASCADE, null=True)
    rack=models.ForeignKey(rack,on_delete=models.CASCADE, null=True)
    position=models.ForeignKey(position,on_delete=models.CASCADE, null=True);

Mi problema es cómo representar un Pallet Mixto, lo que significa que un pallet mixto puede tener múltiples customer_partnum, designación, etc.
Estoy leyendo los datos utilizando un código QR y este es un ejemplo para una mejor comprensión.

Pallet Normal:

QR|XX5125B219|2021/07/13|2021/08/26|XXX2125-B|XX-T4311311E-4IX|XX-T43-11311-E-XXX|Alguna descripción|300|40|12000|

Pallet Mixto:

QR|XX5125B182|2021/07/13|2021/08/26|XXX2125-B|
XX-L8814313A-9PX|XX-L88-14313-G-XXX|Alguna descripción|1000|12|12000|
XX-L8814314A-9PX|XX-L88-14314-G-XXX|Alguna descripción|1000|13|13000|
XX-L8814316E-9PX|XX-L88-14316-E-XXX|Alguna descripción|1000|15|15000| 

En el caso de Pallet Mixto, tengo muchas referencias para que el usuario agregue un nuevo pallet mixto. Es un poco desafiante elegir entre ellas. Si hago un menú desplegable, contendrá más de 200 referencias y, como te mencioné antes, un pallet mixto puede tener 2 o más referencias.

Me encantaría recibir tus sugerencias si es posible.
GRACIAS.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una opción que podrías considerar es crear un modelo separado para el contenido de los palets, con una clave externa que haga referencia al modelo PalletN. El modelo PalletContent podría tener los mismos campos que PalletN, además de un campo adicional para la cantidad de cada artículo en el palet.

    Por ejemplo:

    class PalletContent(models.Model):
    
        pallet = models.ForeignKey(PalletN, on_delete=models.CASCADE)
        customer_partnum = models.CharField(max_length=50)
        designation = models.CharField(max_length=50)
        partsnum = models.CharField(max_length=50)
        boxquantity = models.IntegerField(default=0)
        quantity = models.IntegerField(default=0)
        production_date = models.DateField(blank=True, null=True)
        suplier = models.CharField(max_length=50, blank=True, null=True)
        shipment_date = models.DateField(blank=True, null=True)
        Customer_code = models.CharField(max_length=50, blank=True, null=True)
        Snumber = models.CharField(max_length=50, blank=True, null=True)
        status = models.CharField(max_length=20, blank=True, null=True)
        creation_date = models.DateField(auto_now_add=True)
    

    En este ejemplo, el campo pallet crea una referencia al modelo PalletN, y el campo quantity te permite especificar cuántos de un artículo en particular hay en el palet.

    Posteriormente, podrías crear un formulario que permita al usuario añadir palets mixtos especificando el contenido de cada palet. Podrías utilizar un enfoque de formulario dinámico para añadir campos adicionales para cada artículo en el palet según sea necesario.

    Como alternativa, podrías considerar el uso de una interfaz de arrastrar y soltar para permitir a los usuarios construir visualmente el contenido de un palet mixto. Esto podría ser más fácil de usar que un menú desplegable para seleccionar varios artículos. Una vez que el usuario haya construido el palet, podrías utilizar los datos para crear dinámicamente los objetos PalletContent en la base de datos.

Comments are closed.