Как выполнить метод внутри класса, не вызывая его, с параметром 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())