Является ли это правильным способом создания первичных ключей в django?
class profiles(models.model):
customer_ID = models.IntegerField().primary_key
Является ли это правильным способом создания первичного ключа в django?
Правильный синтаксис для первичного ключа -:
class profiles(models.model):
customer_ID = models.IntegerField(primary_key=True)
Правильный ли это способ создания первичного ключа в django?
No. You use an AutoField [Django-doc] for a primary key, since then the values are dispatched by the database, so:
class profiles(models.model):
customer_ID = models.AutoField(primary_key=True, editable=False)
Но вам не обязательно указывать первичный ключ: если вы не укажете его сами, Django автоматически добавит в модель ключ с именем id.
Нет, это не правильный способ создания первичного ключа в Django, фактически вам не нужно указывать первичный ключ для вашей модели, потому что django автоматически добавит поле для хранения первичного ключа для вас.
В вашем файле settings.py вы найдете строку с:
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
которая автоматически создаст поле 'id' во всех ваших моделях по умолчанию. BigAutoField - это 64-битное целое число, которое автоматически увеличивается в соответствии с доступными id от 1 до 9223372036854775807.
class Profile(models.Model):
customer_username = models.CharField(max_length=100)
customer_email = models.EmailField()
модель Profile будет иметь три поля: id, customer_username, customer_email
Но в случае, если вы хотите отменить первичный ключ, скажем, для примера, используя UUID вместо обычных идентификаторов, вы можете отменить его следующим образом:
import uuid
class Profile(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4,editable=False)
customer_username = models.CharField(max_length=100)
customer_email = models.EmailField()
для получения более подробной информации, пожалуйста, обратитесь к документации django: https://docs.djangoproject.com/en/4.0/ref/models/fields/#primary-key