@maniacus26

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

есть 2 модели:

class U (models.Model):
    id = models.AutoField(primary_key=True)
    created_at = models.DateTimeField(auto_now_add=True)
    author = models.CharField(max_length=3000, blank=True, null=True)
    name = models.CharField(max_length=18, null=True, blank=True)

class U_blocked (models.Model):
    name_blocked = models.CharField(max_length=18, help_text="блокированный")


В модель U_blocked периодически через админку заносятся "некоторые запрещенные значения" которые нельзя использовать в модели U.

Мне необходимо при внесении сведений через форму модели U в поле "name", осуществлять проверку на наличие внесенного значения в U_blocked.name и если значения совпадают то выбрасывать ошибку.

Подскажите пожалуйста как можно реализовать такую проверку.
  • Вопрос задан
  • 2373 просмотра
Решения вопроса 1
@MAGistr_MTM
Учусь программировать
if U_blocked.objects.filter(name_blocked=cleaned_data.get('name')).exists():
    raise ValidationError
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@harabudjasim
Если я все правильно понимаю, то нужно предотвратить добавление в базу записей с текстом из "заблокированной" таблицы.

Попробуйте добавить проверку в pre_save сигнале. Вот примерный механизм.
https://stackoverflow.com/a/6462188
В случае если надо предотвратить save - просто бросаете исключение.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы