Является ли это правильным способом создания первичных ключей в 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

Вернуться на верх