Django / Python: добавление увеличивающихся чисел к массе имен пользователей - PullRequest
0 голосов
/ 30 марта 2020

Я создаю игру, в которой у меня есть список игроков, и когда игра создается, создается список игроков (пользователей). Функция ниже создает игрока со случайными именами пользователей, например, «Player_0tt».

I вместо sh вместо случайных цифр ascii_lowercase + для увеличения каждого пользователя на 1. Таким образом, первый пользователь называется Player_1, Player_2..et c. Я буду добавлять идентификатор игры к имени пользователя, чтобы сделать каждого пользователя игры уникальным, но сейчас я пытаюсь получить 1, 2, 3 ... за своими именами пользователей.

Должен ли я создать новую функцию с приращением или есть ли более разумный способ сделать это?

Создать случайное имя пользователя

def generate_username(length=3, chars=ascii_lowercase + digits, split=7, delimiter='_'):
    username = 'Player' + ''.join([choice(chars) for i in range(length)])

    if split:
        username = delimiter.join([username[start:start + split] for start in range(0, len(username), split)])

    try:
        User.objects.get(username=username)
        return generate_random_username(length=length, chars=chars, split=split, delimiter=delimiter)
    except User.DoesNotExist:

        return username

1 Ответ

0 голосов
/ 30 марта 2020

Разберись. Изменился мой подход.

Вместо функции generate_username я создал счетчик, который рассчитывает для каждой сгенерированной итерации (для каждого пользователя).

Это немного вне контекста, но выглядит следующим образом:

Для каждого созданного участника добавьте идентификатор и счет игры, начиная с 1 и выше

    count = 0
    for player_url in game_urls:
        count = count + 1
        user = User.objects.create_user(username='Player'+str(game.id)+'_'+str(count), password="123456", first_name=player_url, last_name=game.id)
        user.save()

Это приведет к тому, что сгенерированные пользователи будут выглядеть следующим образом

Player155_1

Player155_2

... et c

Сейчас я просто использовал строки данных first_name и last_name для данных. Вероятно, лучше переименовать строки пользователя или добавить такие, которые называются Game_ID и Player_URL

...