Как я могу сгенерировать случайное значение для имени пользователя в модели пользователя django? - PullRequest
1 голос
/ 01 августа 2020

Меня устраивает модель пользователя django по умолчанию, но я хочу, чтобы имя пользователя создавалось автоматически. Я не хочу создавать собственную модель пользователя. Мне нужно определить функцию, которая генерирует уникальные случайные имена пользователей следующим образом:

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

Я не хочу генерировать случайное имя пользователя, используя random module, а затем проверять, существует ли оно, в противном случае создайте другое случайное, проверьте еще раз и т. д.

Есть ли быстрый способ сделать это?

Ответы [ 2 ]

0 голосов
/ 01 августа 2020
Ответ

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

, прежде чем продолжить.

EDIT

Для защиты от столкновений я зафиксирую следующие изменения:

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)
0 голосов
/ 01 августа 2020

Можно попробовать примерно так:

import string, random
def generate_username(length):
   username = string.ascii_lowercase #assuming you want only lowercase
   return ''.join(random.choice(username) for i in range(length))
...