Ao tentar alterar uma instância de produto ná página de admin isso está acontecendo.
Os meus Models estão assim:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import AbstractUser
class Produto(models.Model):
OPCOES_CATEGORIA = [
("PRATO RASO", "Prato Raso"),
("GUARDANAPO", "Guardanapo"),
("TALHER", "Talher"),
("TACAS", "Tacas"),
("TRILHOS DE MESA", "Trilhos de Mesa"),
("SOUPLAT", "Souplat"),
("JOGO AMERICANO", "Jogo Americano"),
("CHA E CAFE", "Cha e Cafe"),
("PRATO SOBREMESA", "Prato Sobremesa"),
("PORTA GUARDANAPO", "Porta Guardanapo"),
]
OPCOES_ESTILO = [
("ELEGANTE", "Elegante"),
("TROPICAL", "Tropical"),
("FLORIDO", "Florido"),
]
nome = models.CharField(max_length=100)
categoria = models.CharField(max_length=150, choices=OPCOES_CATEGORIA, default='')
preco = models.DecimalField(decimal_places=2, max_digits=10)
quantidade_estoque = models.IntegerField
imagem = models.ImageField(upload_to="imagens/", blank=True)
cor = models.CharField(max_length=100)
estilo = models.CharField(max_length=100, choices=OPCOES_ESTILO, default='')
estoque = models.IntegerField(null=False, blank=False)
publicado = models.BooleanField(default=False)
def __str__(self):
return self.nome
class Cliente(AbstractUser):
cpf = models.CharField(max_length=11, primary_key=True, default='')
username = models.CharField(max_length=150, unique=True)
nome = models.CharField(max_length=100)
email = models.EmailField()
telefone = models.CharField(max_length=20)
data_nascimento = models.DateField(default=timezone.now)
senha = models.CharField(max_length=100)
def __str__(self):
return self.nome
class Aluguel(models.Model):
cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE)
data_aluguel = models.DateField(default=timezone.now)
data_devolucao = models.DateField()
preco_total = models.DecimalField(decimal_places=2, max_digits=10)
class ItemAluguel(models.Model):
aluguel = models.ForeignKey(Aluguel, on_delete=models.CASCADE)
produto = models.ForeignKey(Produto, on_delete=models.CASCADE)
quantidade = models.PositiveIntegerField(default=1)
preco_item = models.DecimalField(decimal_places=2, max_digits=10)
Pensei na possibilidade de que Produto é chave estrangeira de ItemProduto, mas não tem instâncias de objetos ItemProduto na tabela, apenas de produto. Então não sei o que está acontecendo.
Mais detalhes do erro:
IntegrityError at /admin/categorias/produto/11/change/
FOREIGN KEY constraint failed
Request Method: POST
Request URL: http://127.0.0.1:8000/admin/categorias/produto/11/change/?_changelist_filters=categoria__exact%3DPRATO%2BRASO
Django Version: 5.0.3
Exception Type: IntegrityError
Exception Value:
FOREIGN KEY constraint failed
Exception Location: C:\Python312\Lib\site-packages\django\db\backends\base\base.py, line 299, in _commit
Raised during: django.contrib.admin.options.change_view
Python Executable: C:\Python312\python.exe
Python Version: 3.12.1
Python Path:
['C:\\Users\\João Lucas\\Desktop\\Eternize_Locacao',
'C:\\Python312\\python312.zip',
'C:\\Python312\\DLLs',
'C:\\Python312\\Lib',
'C:\\Python312',