我一直在尝试根据模型中的字段创建自定义 PK。 https://redis.io/learn/develop/python/redis-om
“默认 ID 生成函数会创建 ULID,但如果您想使用不同类型的主键,则可以更改为模型生成主键的函数。”
我想根据模型(实例)的一些字段自定义主键的生成。
我注意到,如果我创建一个名为“pk”的字段,redis-om 确实会将此值作为主键。
但是有办法吗。我可以直接将字段指定为主键吗?
您可以将
Field(primary_key=True)
添加到模型中的任何属性。
这是示例中提供的带有默认 pk 的代码:
import datetime
from typing import Optional
from redis_om import HashModel
class Customer(HashModel):
first_name: str
last_name: str
email: str
join_date: datetime.date
age: int
bio: Optional[str] = "Super dope"
andrew = Customer(
first_name="Andrew",
last_name="Brookins",
email="[email protected]",
join_date=datetime.date.today(),
age=38)
print(andrew.pk)
# > '01FJM6PH661HCNNRC884H6K30C'
andrew.save()
assert Customer.get(andrew.custom_pk) == andrew
要分配您自己的主键,您可以按如下方式更新代码:
import datetime
from typing import Optional
from redis_om import HashModel, Field
class Customer(HashModel):
custom_pk:str = Field(primary_key=True)
first_name: str
last_name: str
email: str
join_date: datetime.date
age: int
bio: Optional[str] = "Super dope"
andrew = Customer(
custom_pk = "customPkValue",
first_name="Andrew",
last_name="Brookins",
email="[email protected]",
join_date=datetime.date.today(),
age=38)
andrew.save()
assert Customer.get(andrew.custom_pk) == andrew