我正在尝试将“product_id”与新产品一起添加到 MySQL 数据库,以便在运行 Django 的电子商务网站中使用。然后,我想使用这些 Product_id 值在电子商务网站内进行搜索。因此,它们的长度只需 5 个字符。
models.py 中的产品类如下所示:
from django.utils.crypto import get_random_string
class Product(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(max_length=255)
category = models.ForeignKey(Category, related_name='products', on_delete=models.CASCADE)
product_id = models.IntegerField(get_random_string(5, 1234567890)) # Max length 5, numerals only
description = models.TextField(blank=True, null=True)
price = models.FloatField()
当尝试将模型迁移到 MySQL 服务器时,我得到:
File "C:\Users\user\Desktop\ecommerce\apps\store\models.py", line 18, in <module>
class Product(models.Model):
File "C:\Users\user\Desktop\ecommerce\apps\store\models.py", line 22, in Product
product_id = models.IntegerField(get_random_string(5, 1234567890)) # Create a random numeric id for each product
File "C:\Users\user\Desktop\ecommerce\venv\lib\site-packages\django\utils\crypto.py", line 74, in get_random_string
return ''.join(secrets.choice(allowed_chars) for i in range(length))
File "C:\Users\user\Desktop\ecommerce\venv\lib\site-packages\django\utils\crypto.py", line 74, in <genexpr>
return ''.join(secrets.choice(allowed_chars) for i in range(length))
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\random.py", line 288, in choice
i = self._randbelow(len(seq))
TypeError: object of type 'int' has no len()
据我了解,我应该能够设置整数的长度,并将其设置为每次在数据库中创建新产品时存储的数字 ID。
如果这个问题很愚蠢,我很抱歉,但这是我的第一个问题,我进行了搜索,但找不到解决方案。
蛊毒传说
相关分类