Первичный ключ
В реляционной модели баз данных первичный ключ - это конкретный выбор минимального набора атрибутов (столбцов), которые однозначно определяют кортеж (строку) в отношении (таблице).
Таким образом, вы можете использовать первичный ключ по умолчанию id
или uuid
(на ваш выбор).
Если вы хотите использовать оба варианта, вместо этого используйте unique=True
.
class Store(models.Model):
uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=100, blank=False)
url = models.URLField(max_length=300, blank=False)
country = models.CharField(max_length=100, blank=True)
Для вашего случая вы можете изменить модель на
from django.db.models.fields import AutoField
from django.db.models.fields import checks
from django import models
class AutoFieldNonPrimary(AutoField):
def _check_primary_key(self):
if self.primary_key:
return [
checks.Error(
"AutoFieldNonPrimary must not set primary_key=True.",
obj=self,
id="fields.E100",
)
]
else:
return []
class Store(models.Model):
id = models.AutoFieldNonPrimary(unique=True)
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=100, blank=False)
url = models.URLField(max_length=300, blank=False)
country = models.CharField(max_length=100, blank=True)