DJANGO КОНТРОЛИРОВАТЬ ПРОВЕРКИ: SystemCheckError: (models.E032) имя ограничения age_gte_18 не является уникальным среди моделей - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь соединить Django с PostgreSQL, пока все идет хорошо, я создал модель для женщин-клиентов

from django.db import models
from django.db.models import CheckConstraint, Q

class fml_tbl(models.Model):
     fml_id = models.CharField(primary_key = True, max_length = 10)
     first_name = models.CharField(max_length = 20, null = False)
     last_name = models.CharField(max_length = 20)
     age = models.PositiveIntegerField(unique = True)
     qualification = models.CharField(max_length = 50)
     profession = models.CharField(max_length = 50)
     officer = models.ForeignKey("officer", on_delete=models.CASCADE, null = False)

     class Meta:
          constraints = [
               models.CheckConstraint(check=Q(age__gte=18), name='age_gte_18')
          ]

Я добавил проверочное ограничение для проверки возраста клиент, когда я мигрирую, я получаю сообщение об ошибке ...

django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
?: (models.E032) constraint name 'age_gte_18' is not unique amongst models: client.fml_tbl, client.ml_tbl.

System check identified 1 issue (0 silenced).

есть также таблица клиентов мужского пола, такая же как эта, я просто пытаюсь применить django ограничения модели, потому что postgresql также использует ограничения, но я не могу понять, что здесь делать. Я использую Django 3.0 и Python 3.7

Я искал разные ответы на stackoverflow и в других местах, но ничего не могу найти, я использовал документацию django и этот сайт для понимания ограничений, но пока этот - это все, что говорится в документации о моей ошибке, и этот - единственный SO-ответ, который я нахожу на CheckConstraints, но это не решает мою проблему.

Пожалуйста, помогите мне и объясните это как можно проще, потому что я новичок ie. Я очень ценю помощь!

1 Ответ

0 голосов
/ 18 апреля 2020

Вы пытаетесь определить два разных индекса с одинаковыми name, age_gte_18. Проверка системы говорит вам не делать этого. Это ограничение, по-видимому, не обсуждается в документации Django, но предположительно является ограничением одной или нескольких поддерживаемых баз данных (см., Например, этот ответ ).

Решение простое - присвойте каждому индексу уникальный name (или просто не указывайте имя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...