Aula 41 – Loja Online – Django – Modelo do carrinho
Aula 41 – Loja Online – Django – Modelo do carrinho
Voltar para página principal do blog
Todas as aulas desse curso
Aula 40 Aula 42
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", {} )