Django: Как проверять корректность поля в models.py при создании новых объектов?

Рейтинг: 0Ответов: 0Опубликовано: 29.06.2023

Я делаю Url Shortener на django. Есть модель ссылки с двумя полями: link и key, первое - это начальная ссылка, которую ввел пользователь, второе - ключ или идентификатор, который будет добавляться как параметр сокращенной ссылки для переадресации. Этот ключ генерируется с помощью функции gen_key, которая рандомно выбирает 6 символов из строки содержащей заглавные, строчные буквы английского алфавита и цифры.

Я хочу в своей модели прописать такой метод, который будет автоматически вызываться перед сохранением объекта и проверять уникально ли поле key и если оно повторяется перегенерировать его и сохранить объект. Как мне это можно сделать? Вот мой код models.py:

from django.db import models
from random import choice

def gen_key():
    chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
    key = ''.join([choice(chars) for x in range(6)])
    key = 'ababab'
    return key

class Link(models.Model):
    link = models.CharField(max_length=300)
    key = models.CharField(max_length=200, default=gen_key(), editable=False, unique=True)

    def save(self, *args, **kwargs):
        print(args)
        print(kwargs)
        super().save(*args, **kwargs)  # Call the "real" save() method.


    def __str__(self):
        return self.link

Ответы

Ответов пока нет.