如何将随机整数设置为 Django CharField 的默认值?
How to set a random integer as the default value for a Django CharField?
我的 models.py 看起来像这样:
import random
random_string = str(random.randint(10000, 99999))
class Content(models.Model):
......
unique_url = models.CharField(default = random_string)
当我在管理中添加内容时,会生成一个范围内的整数并将其作为默认值放入字符字段中。从那里,我可以简单地向 charfield 添加更多单词。但是,我当前设置的问题是每次添加新文章时整数都保持不变。我想生成并插入随机整数,因为我正在使用 unique_url 字段基本上找到我的每个特定对象,并且我期望有很多内容,所以添加随机数通常会确保每个内容都有独一无二的 unique_url.
因此,我正在寻找一个系统,每次使用管理面板添加新内容时都会生成一个随机整数,并将其作为一个字段的默认值。这样的事情在 Django 中甚至可能吗?
这样你就生成了一次随机数。您需要定义一个函数,例如:
def random_string():
return str(random.randint(10000, 99999))
然后定义您已有的模型,不使用 ()
以传递对函数本身的引用,而不是函数返回的值:
class Content(models.Model):
......
unique_url = models.CharField(default = random_string)
您可以通过将函数作为默认值传递来生成随机字符串。该函数将 运行 并使用函数的 return 值设置默认值。引用@Wtower.
给出的例子
def random_string():
return str(random.randint(10000, 99999))
class Content(models.Model):
......
unique_url = models.CharField(default = random_string)
但这有一个警告:当您创建字段并迁移现有数据库时,该函数将 运行 仅 一次 并使用相同的 'random' 进行更新] 数字。
例如,如果模型中已有 500 个条目。对于每个 unique_url,您将拥有相同的字符串,例如“548945”,这将破坏整个目的。
您可以通过更改数据库中现有条目的值来解决这个问题。这是一次性工作,可以使用 django shell
.
完成
python ./manage.py shell
from appname.models import Content, random_string
# Change appname and file name accordingly
entries = Content.objects.all()
for entry in entries :
entry.unique_url = random_string()
entry.save()
我的 models.py 看起来像这样:
import random
random_string = str(random.randint(10000, 99999))
class Content(models.Model):
......
unique_url = models.CharField(default = random_string)
当我在管理中添加内容时,会生成一个范围内的整数并将其作为默认值放入字符字段中。从那里,我可以简单地向 charfield 添加更多单词。但是,我当前设置的问题是每次添加新文章时整数都保持不变。我想生成并插入随机整数,因为我正在使用 unique_url 字段基本上找到我的每个特定对象,并且我期望有很多内容,所以添加随机数通常会确保每个内容都有独一无二的 unique_url.
因此,我正在寻找一个系统,每次使用管理面板添加新内容时都会生成一个随机整数,并将其作为一个字段的默认值。这样的事情在 Django 中甚至可能吗?
这样你就生成了一次随机数。您需要定义一个函数,例如:
def random_string():
return str(random.randint(10000, 99999))
然后定义您已有的模型,不使用 ()
以传递对函数本身的引用,而不是函数返回的值:
class Content(models.Model):
......
unique_url = models.CharField(default = random_string)
您可以通过将函数作为默认值传递来生成随机字符串。该函数将 运行 并使用函数的 return 值设置默认值。引用@Wtower.
给出的例子def random_string():
return str(random.randint(10000, 99999))
class Content(models.Model):
......
unique_url = models.CharField(default = random_string)
但这有一个警告:当您创建字段并迁移现有数据库时,该函数将 运行 仅 一次 并使用相同的 'random' 进行更新] 数字。
例如,如果模型中已有 500 个条目。对于每个 unique_url,您将拥有相同的字符串,例如“548945”,这将破坏整个目的。
您可以通过更改数据库中现有条目的值来解决这个问题。这是一次性工作,可以使用 django shell
.
python ./manage.py shell
from appname.models import Content, random_string
# Change appname and file name accordingly
entries = Content.objects.all()
for entry in entries :
entry.unique_url = random_string()
entry.save()