Как решить проблему с ограничением FOREIGN KEY? DJANGO
У меня проблема с FK, и я не знаю, проблема ли это с миграциями или со схемой. Ниже приведены модели моей электронной коммерции. Где есть два типа пользователей, Клиенты и Супермаркеты. Каждый тип может принимать только одну роль. И каждый супермаркет может иметь несколько продуктов. Ошибка возникает, когда я связываю супермаркет с продуктом. В моей диаграмме есть ошибка
products/models.py
class Categoria(models.Model):
nome = models.CharField(max_length=50)
def __str__(self):
return self.nome
class Produto(models.Model):
name = models.CharField(max_length=70)
price = models.FloatField()
qnt_stock = models.IntegerField()
sold = models.IntegerField()
category = models.ForeignKey(Categoria, on_delete=models.CASCADE)
description = models.TextField(default="", blank=True, null=True)
slug = models.SlugField(unique=True)
image = models.ImageField(upload_to="products/%Y/%m/%d", blank=True, null=True)
expiration_date = models.DateTimeField(null=True, blank=True)
supermarket = models.ForeignKey(
Lojista, on_delete=models.CASCADE, blank=True, null=True
)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("produtos:produto_detail", kwargs={"slug": self.slug})
users/models.py
class CustomUser(AbstractUser):
class Role(models.TextChoices):
SUPERMARKET = "SUPERMARKET", _("Supermarket")
CLIENT = "CLIENT", _("Client")
role = models.CharField(max_length=50, choices=Role.choices)
def __str__(self):
return self.username
class Client(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, primary_key=True)
def __str__(self):
return self.user.username
class Lojista(models.Model):
def upload_photo_to(instance, filename):
return f"brand/{instance.name}/{filename}"
supermarket = models.OneToOneField(
CustomUser, on_delete=models.CASCADE, primary_key=True
)
brand = models.ImageField(upload_to=upload_photo_to, blank=True, null=True)
cep = BRPostalCodeField()
state = models.CharField(choices=br_states.STATE_CHOICES, max_length=2, null=False)
city = models.CharField(max_length=128, null=False)
district = models.CharField(max_length=128, null=True)
street = models.CharField(max_length=128, null=True)
def __str__(self):
return f"{self.supermarket.username} - {self.street}, {self.district} - {self.city}/{self.state}"
ERROR:
IntegrityError at /admin/produtos/produto/2/change/
FOREIGN KEY constraint failed