Задать вопрос
@Digi3057

Как при создании обьекта джанго генерировать значение одного поля на основе другого?

Есть модель где при создании обьекта необходимо, чтобы одно поле вычислялось на основе другого. Пользоваться ей предполагается только через админку джанго, поэтому работаю только в models.py. пробовал сигналы receiver, но не удается даже добиться требуемого, не говоря уже об оптимальности решения.
class People(models.Model):
    name = models.CharField(max_length=500, unique=True)
    qr_code = models.ImageField(upload_to="img/qr_codes/", verbose_name="QR-код", null = True)

    def save(self, *args, **kwargs):
        qr = qrcode.QRCode(version=2, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=1)
        qr.add_data(self.name)
        qr.make(fit=True)
        self.qr_code=qr.make_image()
        self.qr_code.save('img/qr_codes',+str(self.name)+".png")

        super().save(*args, **kwargs)
  • Вопрос задан
  • 368 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Разработка на Python
    1 год
    Далее
Решения вопроса 1
@Jack444
Django для Image и File полей просто создаёт VARCHAR в бд и закидывает туда названия файла, попробуй так

class People(models.Model):
    name = models.CharField(max_length=500, unique=True)
    qr_code = models.ImageField(upload_to="img/qr_codes/", verbose_name="QR-код", null = True)

    def save(self, *args, **kwargs):
        qr = qrcode.QRCode(version=2, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=1)
        qr.add_data(self.name)
        qr.make(fit=True)
        qr.make_image().save(f'media/img/qr_codes/{self.name}.png'
        self.qr_code = self.name+'.png'
        super().save(*args, **kwargs)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы