如何在django中生成随机数

时间:2011-06-15 05:44:08

标签: django-models

我想在空白字段中生成自动随机数,同时将其保存在django中。


修改

随机数必须是唯一的。

3 个答案:

答案 0 :(得分:14)

编辑:更改解决方案以使随机数唯一并使用Django的make_random_password

功能。请注意,下面假设您将随机数存储在名为

的字段中 模型UserProfile中的

temp_password,它是User模型的扩展名。

random_number = User.objects.make_random_password(length=10, allowed_chars='123456789')

while User.objects.filter(userprofile__temp_password=random_number):
    random_number = User.objects.make_random_password(length=10, allowed_chars='123456789')

另请注意,您也可以将随机代码存储为字母和数字的组合。

allowed_chars的默认值是一个字母和数字的字符串减去一些容易导致

的字母和数字

用户之间的混淆(1,l等)

有关Django的make_random_password函数的更多信息: https://docs.djangoproject.com/en/dev/topics/auth/#manager-functions

OLD:

import random

n = random.randint(a,b) # returns a random integer

在上面的示例中< = n< = b

随机类中有更多类型的随机数: http://docs.python.org/library/random.html

答案 1 :(得分:2)

它比django更像是一种蟒蛇的东西。

您可以找到有关随机课here

的所有信息 祝你好运!

答案 2 :(得分:1)

简单来说,我在python中通过random.randint做了一个随机数。然后因为我需要唯一号码,所以我查询这个号码到数据库,如果这个号码已经存在,那么我通过while循环再次随机。

random_num =  random.randint(2345678909800, 9923456789000)

uniqe_confirm = Order.objects.filter(order_id=random_num)

while uniqe_confirm:
    random_num =  random.randint(2345678909800, 9923456789000)
    if not Order.objects.filter(order_id=random_num):
        break