如何在 Django 中禁用自动创建 ID?

Posted

技术标签:

【中文标题】如何在 Django 中禁用自动创建 ID?【英文标题】:How to disable automatic id creation in Django? 【发布时间】:2016-01-16 06:33:28 【问题描述】:

我想在 Django 模型中禁用自动创建 ID。有可能这样做吗?怎么样?

【问题讨论】:

在模型上声明一个主键 (docs.djangoproject.com/en/1.8/ref/models/fields/#primary-key)。不支持没有 ID 的模型 (AFAIK) 是的,这是可能的。但是,如果我只想存储用户对某个项目的喜欢怎么办?我不需要那些东西的 id。 【参考方案1】:

正如回复中提到的,您需要在非 AutoField 上声明主键。例如:

from django.db import models

class Person(models.Model):
    username = CharField(primary_key=True, max_length=100)
    first_name = CharField(null=True, blank=True, max_length=100)

请注意,将字段设置为primary_key=True 会自动使其唯一且不为空。祝你好运!

【讨论】:

是的,这是可能的。但是,如果我只想存储用户对某个项目的喜欢怎么办?我不需要那些东西的 id。 是的,你可能有一些用例,在你的数据库表中你不会使用第三种规范化形式,但是如果你需要这些表在 Django 中作为模型公开,你必须这样做。您几乎没有/没有损失,这些字段可以自动管理,您几乎不会争论已用空间... 除非您在数据库中查看它,否则它甚至不会真正暴露给您作为编码人员,并且对于很多可靠性而言,开销很小。多年来,在数据库中拥有一个有保证的唯一键为我节省了很多次。

以上是关于如何在 Django 中禁用自动创建 ID?的主要内容,如果未能解决你的问题,请参考以下文章

在Django中的文本字段上禁用自动完成?

在 Django 中禁用会话创建

如何在jquery移动自动完成中获取所选列表数据的ID

我可以在没有自动 ID 的情况下在 Django 中创建模型吗?

Django 之 文件配置pycharm及django连接数据库创表及表的增删改查

如何在 Django 中自动查询?