#django #django-models #django-rest-framework
Вопрос:
Внутри моей модели есть функция, которая генерирует случайное значение для поля модели, и мне нужно установить это значение по умолчанию для поля модели.
У меня есть следующая модель
class Info(TimeStampedModel):
info_id = models.UUIDField(primary_key=True)
generated_url = models.TextField(
null=False, blank=False, default=random
)
def random(self):
return 'customer.random.domain.com.' ("".join(random.choices(string.ascii_uppercase string.digits, k=5)))
Я хочу, чтобы значение по умолчанию для generated_url исходило из метода внутри модели, названного случайным.
но во время выполнения я получаю следующее исключение:
TypeError: random() missing 1 required positional argument: 'self'
Если я добавлю скобку в конце имени функции как
generated_url = models.TextField(
null=False, blank=False, default=random()
)
Тогда в этом случае я получаю ту же ошибку времени компиляции:
TypeError: random() missing 1 required positional argument: 'self'
Ответ №1:
Так что после прочтения полной трассировки стека я смог выяснить, что внутри одного из моих миграций у меня был случайный() определяется как функция внутри класса модели и атрибут generated_uri указывал, что внутренний метод, поэтому, когда я пытался сменить сферу случайно() из внутри класса и вне класса, я получаю исключение, которое было из-за миграции , что атрибут случайный() не нашли в состав объекта таким образом, решение моей проблемы было так же.
- Отменить все миграции
- Удалите функцию класса, измените ее область действия и поместите ее за пределы класса
- Снова добавьте миграцию
- Запустите миграцию, и это сработало