我有一个用Django制作的PostgreSQL表,看起来像这样
id | user_id | data
++++++++++++++++++++++++++++++++++++
1119582010 | 1927472901 | foo
0318715789 | 2294819294 | bar
3927284920 | 3281847282 | baz
1610986385 | 3281847282 | qux
1948381983 | 2069385930 | foo
1610986485 | 3103827482 | corge
字符串
该模型看起来大约像这样
class Data(Model):
user = ForeignKey(User, delete=CASCADE)
data = CharField(max_length=32)
型
两个不同的行可以具有相同的user_id或相同的数据,但不能有两个行同时共享相同的user_id和数据。
因此,既然每一行都是唯一的,我是否可以取消自动生成的id
列?这会占用很多空间。
谢谢
1条答案
按热度按时间zd287kbt1#
您可以使用**
UniqueConstraint
**[Django-doc]作为唯一性约束(可以跨越多个列)。这看起来像:
字符串
有没有什么方法可以去掉自动生成的id列?它占用了很多空间。
否,这已经被多次请求,但每次都被拒绝。原因可能不是数据库;而是如何引用URL路径和
<select>
小部件中的对象,以及Django的“生态系统”已经建立了一个假设,即主键引用 * 单个 * 唯一字段。备注:通常使用**
settings.AUTH_USER_MODEL
[Django-doc]引用用户模型比直接使用User
**模型[Django-doc]更好。有关更多信息,您可以查看文档的 * 引用User
模型 * 部分。