清单模型应用程序的Django模型设计帮助

时间:2018-07-23 20:19:39

标签: mysql django django-models django-views

我正在为车间中的工具制作库存应用,这就是我想要做的:

  • 1.-我想要工具车,所以我可以检查工具车中的工具。
  • 2.-我希望能够记录哪些工具受到损坏,工具在哪个购物车中以及该工具损坏的原因,还希望检查它是否属于消耗品。
  • 3.-我还希望能够增加或减少购物车示例中每种工具的数量(假设我在购物车中添加了2个 1/8“刀具,其中一个损坏了希望看到其中还有一个1/8“切纸器)

我目前能做的是:

  • 1- 创建购物车。
  • 2- 将购物车分配给员工。
  • 3- 将工具分配到购物车。

我遇到的问题是增加或减少工具数量并记录坏掉的工具,我对需要做什么有一些模糊的想法(我需要创建一个表,为每个工具分配一个唯一的ID,进入购物车)我怎么都无法把这个想法组合在一起。

请你帮我一下!我需要知道我想念的东西,或者我怎么能实现自己想做的事

我的 models.py

# =========================================================================== #
#   MODELO PARA CREAR CARRITOS
# =========================================================================== #


class Carritos(models.Model):
    no_carrito = models.CharField(max_length=3, unique=True)
    empleado = models.OneToOneField(Empleados, on_delete=models.CASCADE)
    # empleado = models.ManyToManyField(Empleados,  through='Transaccion')
    items = models.ManyToManyField(Item, through='Transaccion', related_name='carritos')
    f_creacion = models.DateTimeField(auto_now_add=True)
    f_actualizacion = models.DateTimeField(auto_now=True)
    activo = models.BooleanField(default=True)

    def get_absolute_url(self):
        return reverse('inventario:carrito')#, kwargs={'pk': self.pk})


    class Meta:
        verbose_name_plural = "Carritos"

    def __str__(self):
        return self.no_carrito



class Transaccion(models.Model):

    carrito = models.ForeignKey(Carritos, on_delete=models.CASCADE, related_name='items_carrito')
    herramienta = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='items_carrito')
    cantidad = models.PositiveSmallIntegerField()
    activo = models.BooleanField(default=True)
    tipo = models.CharField(max_length=10, choices=CONSUMIBLE, blank=True, null=True)
    motivo = models.CharField(max_length=10, blank=True, null=True)


    def get_absolute_url(self):
        return reverse('inventario:carrito')#, kwargs={'pk': self.pk})

我的 views.py

# =========================================================================== #
#   LOGICA PARA CREAR CARRITOS
# =========================================================================== #
# ===================> Logica relacinado con Cortadores <=====================#

def home_carrito(request):
    template_name = 'inventario/carrito/createcarrito.html'
    model  = Carritos

    carritos = Carritos.objects.all()
    if carritos:
        return render(request, template_name, {'carritos':carritos})
    else:
        return render(request,template_name)


class CarritoCreate(CreateView):
    model = Carritos
    fields = [
        'no_carrito',
        'empleado',
        'activo',
    ]

class ItemCreate(CreateView):
    model = Transaccion
    fields = [
        'carrito',
        'herramienta',
        'cantidad',
    ]


def detalle_carrito(request, pk):
    model = Carritos, Transaccion
    template_name = 'inventario/carrito/detalles_carrito.html'

    carritos = Carritos.objects.filter(pk=pk)
    trans =Transaccion.objects.filter(activo=True, carrito=pk)
    print(F'---------->>>>>>{trans}<<<<<<------')
    eliminados =Transaccion.objects.filter(activo=False, pk=pk)

    return render(request,template_name, {'carrito':carritos, 'trans':trans, 'eliminados':eliminados} )



class CarritoUpdate(UpdateView):
    model = Carritos

    fields = [
        'no_carrito',
        'empleado',
        'activo',
    ]
    template_name_suffix = '_update_form' 


class ItemListUpdate(UpdateView):
    model = Transaccion
    fields = [
        'carrito',
        'herramienta',
        'cantidad',
        'tipo',
        'motivo',
        'activo',


    ]

this image show my cart view, where items are assigned to this cart, and a item removed

0 个答案:

没有答案