Как выполнить метод внутри класса, не вызывая его, с параметром self

Я пытаюсь сделать рандомизированные урлы и сохранить их в базе данных, но этот код постоянно возвращает эту ошибку

TypeError: randomizer() missing 1 required positional argument: 'self'

Я попытался вызвать рандомизатор как

randomizer() 

вместо

randomizer

но это не работает, потому что он будет генерировать случайные символы в течение одного раза. То же самое происходит, когда функция qr_generator требует аргумент self.

class Table(models.Model):

     def randomizer(self):
        qr  = str(self.restaurant.id).join((random.choice(string.ascii_letters) for x in range(5))) 
        return qr

    def qr_generator(self):
        url = DOMAIN +"/table/" + self.qr
        qr_img = qrcode.make(url)
        qr_img.save(f"qrs/{self.restaurant.id}/{self.qr}.png")
        return f"qrs/{self.restaurant.id}/{self.qr}"
    
    number = models.IntegerField()
    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
    qr = models.CharField(max_length=50, default=randomizer, unique=True)
    qr_img = models.CharField(default=qr_generator, max_length=100)

использовать статический метод

import random


class Test():
    name = "joe"

    @staticmethod
    def name_with_random_number():
        print(Test.name+str(random.randint(0, 1000)))

    name_number = name_with_random_number


print(Test.name_number())
Вернуться на верх