tortoise-orm主键
时间: 2025-02-24 21:29:24 浏览: 69
### Tortoise-ORM 中主键的定义和用法
在 Tortoise ORM 中,主键通常由框架自动处理,默认情况下会创建一个名为 `id` 的自增整数字段作为主键[^1]。然而,在某些场景下可能需要自定义主键,这可以通过显式声明来实现。
#### 自动生成的主键
当定义数据模型时如果没有特别指定主键,Tortoise ORM 将默认添加一个名为 `id` 的字段:
```python
from tortoise import fields, models
class User(models.Model):
username = fields.CharField(max_length=50)
class Meta:
table = "users"
```
在这个例子中,虽然没有明确定义任何主键字段,但是每个 `User` 实例都会有一个唯一的 `id` 字段作为其主键[^2]。
#### 显式定义主键
如果希望使用不同于默认设置的主键,则可以在模型类内部通过继承 `fields.IntField`, `fields.UUIDField` 或其他合适的字段类型来自定义主键:
```python
import uuid
from tortoise import fields, models
class Product(models.Model):
product_id = fields.UUIDField(pk=True, default=uuid.uuid4)
name = fields.CharField(max_length=100)
class Meta:
table = "products"
```
这里展示了如何将 UUID 设置为主键,并指定了默认值函数 `uuid.uuid4()` 来为新记录生成唯一标识符。
#### 使用字符串类型的主键
除了数值型或UUID外,还可以采用字符形式作为主键,这对于一些特定的应用场景非常有用:
```python
from tortoise import fields, models
class Category(models.Model):
code = fields.CharField(max_length=20, pk=True)
description = fields.TextField()
class Meta:
table = "categories"
```
此代码片段说明了怎样把字符串字段设为主键,适用于那些自然键(natural key)本身就是字符串的情况,比如分类编码等。
阅读全文
相关推荐







