当我运行迁移时,uuid 字段总是在更新,它会给我一些性能问题,任何人都可以向我解释原因和解决方案

Posted

技术标签:

【中文标题】当我运行迁移时,uuid 字段总是在更新,它会给我一些性能问题,任何人都可以向我解释原因和解决方案【英文标题】:when i run migrate the uuid is field is updating always will it give me some perfomance issue is anyone can explain me the reason and solution 【发布时间】:2022-01-14 05:20:30 【问题描述】:
class Customer(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE,blank=True,null=True)
    activate_token = models.CharField(max_length=200,default=str(uuid.uuid4()))
    forget_password_token = models.CharField(max_length=200,default=str(uuid.uuid4()))
    first_name = models.CharField(max_length=100,blank=True,null=True)
    last_name = models.CharField(max_length=100,blank=True,null=True)
    status = models.CharField(max_length=100,blank=True,null=True)
    email = models.CharField(max_length=100,blank=True,null=True)
    gender = models.CharField(max_length=50,blank=True,null=True)
    city = models.CharField(max_length=100,blank=True,null=True)
    country = models.CharField(max_length=100,blank=True,null=True)    


Accounts\migrations\0010_alter_customer_activate_token_and_more.py
        - Alter field activate_token on customer
        - Alter field forget_password_token on customer
    Migrations for 'Store':
      Store\migrations\0004_product_shipping_charges_alter_product_price.py
        - Add field shipping_charges to product
        - Alter field price on product

我有一个客户模型,我存储了两件事,一个是用户激活令牌,另一个是忘记密码令牌,我希望它是随机的,所以我使用了 uuid,但是当我运行迁移时,这种迁移总是以我的方式发生我没有遇到任何功能错误一切正常,但我觉得它可能会给我一个错误

【问题讨论】:

【参考方案1】:

只需将 uuid4 函数调用替换为可调用的(即不带括号),Django 就会知道 uuid 意味着保持不变。

forget_password_token = models.CharField(max_length=200,default=uuid.uuid4)

【讨论】:

那不行兄弟 @sarangkkl,请移除 uuid.uuid4 周围的 str() 函数,并确保已导入 uuid。

以上是关于当我运行迁移时,uuid 字段总是在更新,它会给我一些性能问题,任何人都可以向我解释原因和解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Rails 迁移总是在模式中插入空格或更改列的顺序

Rails的迁移总是插入空格或改变列的顺序在架构

无法在 Heroku 上运行迁移 Postgres

如何关闭 html 输入表单字段建议?

未找到函数“日期”; SQL 语句:

Bash 重命名扩展递归