gpt4 book ai didi

python - 如何在 Django 中创建随机 slug

转载 作者:行者123 更新时间:2023-12-04 02:35:40 24 4
gpt4 key购买 nike

我有一个 Django 应用程序,可以在两个人之间创建契约(Contract)。 用户 创建合约,并在创建时使用 secrets 生成一个随机的 url 安全字符串。

但是,当我创建多个 Contract 实例时,这些 slug 是相同的。获得不同的随机生成的字符串的唯一方法是重新启动我的服务器。我做错了什么?

这是我的 models.py

中重要的部分
    slug = models.SlugField(
default=secrets.token_urlsafe(64),
editable=False,
blank=False
)

这是我创建的最后三个 Contracts。更改其他字段的值不会更改 slug。

    {
"model_email": "POOP@pooop.com",
"shoot_location": "Atlanta, GA",
"shoot_date": "2020-05-24",
"model_name": "",
"created_at": "2020-05-24T19:24:20.220845Z",
"sent_completed_to_model": null,
"sent_completed_to_photographer": null,
"photographer": 1,
"signed": false,
"slug": "Dqyk5-kDzE219_-abRKABETRuOCGOBxzvFVrXZaUGEe8ZLva6i6tdwUYMksSvKJ_BEABV_Vt1H_ttZ6p-yzRyg"
},
{
"model_email": "POOP@pooop.com",
"shoot_location": "Atlanta, GA",
"shoot_date": "2020-05-24",
"model_name": "",
"created_at": "2020-05-24T19:24:21.216218Z",
"sent_completed_to_model": null,
"sent_completed_to_photographer": null,
"photographer": 1,
"signed": false,
"slug": "Dqyk5-kDzE219_-abRKABETRuOCGOBxzvFVrXZaUGEe8ZLva6i6tdwUYMksSvKJ_BEABV_Vt1H_ttZ6p-yzRyg"
},
{
"model_email": "POOP@pooop.com",
"shoot_location": "Atlanta, GA",
"shoot_date": "2020-05-24",
"model_name": "",
"created_at": "2020-05-24T19:24:22.120845Z",
"sent_completed_to_model": null,
"sent_completed_to_photographer": null,
"photographer": 1,
"signed": false,
"slug": "Dqyk5-kDzE219_-abRKABETRuOCGOBxzvFVrXZaUGEe8ZLva6i6tdwUYMksSvKJ_BEABV_Vt1H_ttZ6p-yzRyg"
}

最佳答案

发生这种情况是因为您的默认值不是将在每次保存时调用的函数,而是在您的应用程序启动时生成的常量值

另一种选择是将逻辑移动到模型的 save 方法:

    slug = models.SlugField(
default='',
editable=False,
blank=False
)

...

def save(self, *args, **kwargs):
if not self.default:
self.default = secrets.token_urlsafe(64)

super().save(*args, **kwargs)

关于python - 如何在 Django 中创建随机 slug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61991542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com