Форум сайта python.su
Доброго времени суток!
Джанга 1.6, Пайтон 3.4.
def generate_code(): return random.randint(1000, 1000000000) class NewIp(models.Model): code = models.CharField(max_length=50, null=True, verbose_name='Код для входа', default = generate_code)
Офлайн
helm2004Да не кешируется он. code по отношению к классу NewIp - атрибут класса, эта переменная определяется один раз при создании класса. Это, если мои подозрения верны и вы ошиблись при копировании сюда кода (нет скобок после вызова функции). А решение простое -переопределите save у модели, у при сохранении задавайте значение вызовом функции, если у инстанса оно is None.
Проблема в том, что generate_code кешируется
Офлайн
Цифры все равно одинаковые по code видно.
Делал так:
def save(self, *args, **kwargs): if self is None: self.code = random.randint(1000, 1000000000)
Прикреплённый файлы: Знімок екрана 2016-03-15 о 12.04.35.png (30,2 KБ)
Офлайн
helm2004self никогда не может стать None. Здесь ошибка или когда набирал ошибся?
if self is None:
Отредактировано FishHook (Март 15, 2016 13:04:23)
Офлайн
Убрал говнокод.
def save(self, *args, **kwargs): self.code = random.randint(1000, 1000000000)
Офлайн
Ну а супер где? Так же ничего не сохранится.
Офлайн
Добави супер - нифига. Я уже в отчаяньи.
Офлайн
helm2004покажите код модели полностью, добавьте принтов после каждой строки, что-то у вас не выполняется как надо, а чудес не бывает.
Добави супер - нифига.
Офлайн
Проапгрейдил на версию 1.8 - заработало. Спасибо за ответы!
Офлайн