Как мы можем сохранить уникальный идентификатор, если я сделаю первичным ключом любой другой столбец?

Я хочу использовать ID генерации по умолчанию, а также сделать другое поле первичным ключом. Могу ли я сделать это с помощью django?

это мой объект::

{
    "platform_subscriber_id": "XXXXXXXXXXXXXXX",#this is custom primary key.
    "platform_subscriber_entity": "loop",
    "platform_subscriber_secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "is_remove": false,
    "update_time": "2022-02-09T09:18:28.991032Z",
    "create_time": "2022-02-09T09:18:28.991038Z",
    "platform_subscriber_owner": 1
},

я хочу старый уникальный ID тоже...

{
        "id":1,#this is default one i want back
        "platform_subscriber_id": "XXXXXXXXXXXXXXX",#this is custom primary key.
        "platform_subscriber_entity": "loop",
        "platform_subscriber_secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "is_remove": false,
        "update_time": "2022-02-09T09:18:28.991032Z",
        "create_time": "2022-02-09T09:18:28.991038Z",
        "platform_subscriber_owner": 1
    }

вот как выглядит моя модель:

class Project(models.Model):
    platform_subscriber_owner = models.ForeignKey(User, verbose_name=_("project owner"),db_column="platform_user_id", on_delete=models.CASCADE,null=True,blank=True)
    platform_subscriber_id = models.CharField(_("Project Key"), db_column="platform_subscriber_key", max_length=64,primary_key=True, blank=True)
    platform_subscriber_entity = models.CharField(_("Project Names"), max_length=64,blank=True)
    platform_subscriber_secret_key = models.CharField(_("Project Secret Key"), max_length=64,blank=True)
    is_remove = models.BooleanField(_("Remove"),default=False)
    update_time = models.DateTimeField(_("Updated Time"), default = timezone.now)
    create_time = models.DateTimeField(_("Created Time"), default = timezone.now)

Нет. Поддерживаются только одностолбцовые первичные ключи. Вы можете сделать его unique=True вместо primary_key=True, это решит вашу проблему проверьте это

Но на практике это не является проблемой, поскольку ничто не мешает вам добавить другие ограничения (используя опцию модели unique_together или создав ограничение непосредственно в базе данных) и обеспечить уникальность на этом уровне.

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