когда я запускаю миграцию, поле uuid всегда обновляется, это даст мне некоторую проблему производительности, кто-нибудь может объяснить мне причину и решение

#django #django-models #django-views #django-templates

#джанго #джанго-модели #джанго-просмотры #django-шаблоны

Вопрос:

 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)    Accountsmigrations010_alter_customer_activate_token_and_more.py  - Alter field activate_token on customer  - Alter field forget_password_token on customer  Migrations for 'Store':  Storemigrations004_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)  

Комментарии:

1. это не работает, брат

2. @sarangkkl, пожалуйста, удалите функцию str() вокруг uuid.uuid4 и убедитесь, что uuid импортирован.