Aula 41 - Loja Online - Django - Modelo do carrinho

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no Facebook

Esse é o link do código fluente no Pinterest

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Melhore seu NETWORKING

Participe de comunidades de desenvolvedores:

Fiquem a vontade para me adicionar ao linkedin.

E também para me seguir no v.

Ah, se puder, clica na estrela nos meus repositórios pra dá uma força ao meu perfil no GITHUB

Código final da aula:

https://github.com/toticavalcanti

Aula 41 - Loja Online - Django - Modelo do carrinho

Vamos criar o modelo do carrinho, abra o django_ecommerce/carts/models.py e coloque o código abaixo.

django_ecommerce/carts/models.py


from django.conf import settings
from django.db import models

from products.models import Product

User = settings.AUTH_USER_MODEL
class Cart(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null = True, blank = True)
    products = models.ManyToManyField(Product, blank = True)
    total = models.DecimalField(default = 0.00, max_digits=100, decimal_places = 2)
    updated = models.DateTimeField(auto_now = True)
    timestamp = models.DateTimeField(auto_now_add = True)

    def __str__(self):
        return str(self.id)
No Cart temos a chave estrangeira do usuário ( user ) ao qual o carrinho pertence, ou seja, o identificador do dono do carrinho, a associação do carrinho a um usuário. ( products ) é um ManyToManyField porque um produto pode estar em vários carrinhos e um carrinho pode ter vários produtos. O blank = True do Products é porque o carrinho pode estar vazio. ( total ) é para guardar o valor total do carrinho. O max_digits define que no total podemos ter uma representação com 100 dígitos, incluindo as casa decimais. O decimal_places define que teremos dois dígitos na parte decimal. ( updated ) para saber quando o carrinho foi atualizado a última vez. ( timestamp ) para saber quando o carrinho foi criado. E por fim, o método __str__(), que serve para obter o valor de um objeto Cart em forma de string.

Migrações

Vamos executar o makemigrations e depois o migrate para repercutir no banco o modelo Cart com os campos que acabamos de criar.

python manage.py makemigrations
E agora:

python manage.py migrate
Abra o django_ecommerce/carts/admin.py

from django.contrib import admin

from .models import Cart

admin.site.register(Cart)
Agora o django_ecommerce/carts/views.py

from django.shortcuts import render

def cart_home(request):
    cart_id = request.session.get("cart_id", None)
    if cart_id is None:
        print('create new cart')
        request.session['cart_id'] = 12
    else:
        print("Cart ID exists")
    return render(request, "carts/home.html", {} )

Acesse a rota e veja os prints no console do servidor:

http://127.0.0.1:8000/cart

É isso pessoal, nos vemos na próxima!

Código final da aula:

https://github.com/toticavalcanti

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no Facebook

Link do código fluente no Pinterest

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. ;)