首页 > 解决方案 > 如何在 django 用户模型中为用户名生成随机值?

问题描述

我对 django 默认用户模型感到满意,但我希望自动生成用户名。我不想创建自定义用户模型。我需要定义一个生成唯一随机用户名的函数,如下所示:

user = User.objects.create_user(username=generate_username())
def generate_username():
   pass

我不想生成一个随机用户名random module,然后检查它是否存在,否则,创建另一个随机用户名,再次检查,依此类推。

有没有一种快速的方法来做到这一点?

标签: djangodatabasedjango-models

解决方案


MeL 的回答绝对可行,但我建议使用这个名为Faker的库。它生成实际名称,而不仅仅是随机字符。所以你的代码应该是这样的:

from faker import Faker
fakegen = Faker()

def generate_username(n=5):
    for i in range(n):
        fake.first_name()    # Megan, Katherine, Robert, so on

文档中有更多示例。上面链接。


注意记得运行

pip install faker

在您继续之前。

编辑

为了防止碰撞,我将提交以下更改:

from faker import Faker
fakegen = Faker()

import random

def generate_username():
    # e.g. jonathanfisher2352
    return fake.first_name().lower() + fake.last_name.lower() + random.randint(1000, 9999)

推荐阅读