функция внутри класса не определена? - PullRequest
0 голосов
/ 29 апреля 2020

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

class Images(models.Model):
    uid = models.CharField(max_length=10, default=genid(), editable=False)
    def genid():
        uid = uuid.uuid4().hex[:6]
        if Images.objects.get(uid=uid).exists():
            uid = uuid.uuid4().hex[:6]
        return uid

, но он не работает. это говорит мне, что генид не определен, изображения не определены. как я могу это исправить?

спасибо

1 Ответ

2 голосов
/ 29 апреля 2020

В то время, genid действительно еще не определено. Кроме того, вы должны , а не вызывать функцию, поскольку тогда она по умолчанию будет принимать результат функции. Вы должны определить это как:

class Images(models.Model):
    def <b>genid</b>():
        uid = uuid.uuid4().hex[:6]
        if Images.objects.filter(uid=uid).exists():
            uid = uuid.uuid4().hex[:6]
        return uid
    uid = models.CharField(max_length=10, default=<b>genid</b>, editable=False)

Но обычно они определяются вне функции, например:

def <b>genid</b>():
    uid = uuid.uuid4().hex[:6]
    while Images.objects.filter(uid=uid).exists():
        uid = uuid.uuid4().hex[:6]
    return uid

class Images(models.Model):
    uid = models.CharField(max_length=10, default=<b>genid</b>, editable=False)

Вы, вероятно, должны заменить if с while l oop, поскольку сейчас все еще возможно, что вторая попытка также не удалась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...