2017-01-10 45 views
0

Как я могу генерировать случайный слизень, состоящий из наименьшего количества символов. Я пытаюсь с этим.Django - Создать кратчайший случайный пул

import random 
import string 

u_id = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8)) 

и модель

class Articles(models.Model): 
    slug = models.CharField(max_length=6) 

Как я могу это сделать в модели? Создайте пул, проверьте, доступно ли и установлено. Я хочу создать короткие пули длиной от 1 до 6 символов, лучше всего для меня, начиная с 1 булавки.

+0

Вы считаете использование библиотеки uuid? например u_id = uuid.uuid4() – arlyon

+0

или даже лучше UUIDField ex. slug = models.UUIDField (default = uuid.uuid4, editable = False) – arlyon

ответ

1

На базовом уровне, вы можете сделать это:

import random 
import string 

def rand_slug(): 
    return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(6)) 


class Articles(models.Model): 
    slug = models.CharField(max_length=6, unique=True, default=rand_slug()) 

Выше будет генерировать случайные пули, которая длиной 6 символов. Используя unique=True на вашей модели, он удостоверится, что никакой другой объект Article не имеет этого пули.

Если вы хотите использовать более продвинутый подход, я бы рекомендовал создать этот пул в диспетчере моделей, написав собственный метод create. Затем вы можете сделать случайную слизню с динамическим значением размера, набором символов и т. Д.

+1

Обратите внимание, что django также имеет встроенную функцию генерации случайной строки: 'from django.utils.crypto import get_random_string' –

+0

И что, если rand_slug вернет не- уникальный слизень? Я имею в виду тот, который уже находится в базе данных. – morsisko