如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在没有自动 ID 的情况下在 Django 中创建模型吗?