Как проверить, существует ли что-то в базе данных postgresql с использованием django? - PullRequest
21 голосов
/ 05 марта 2012

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

Как я могу спросить базу данных, если что-то существует, не вытаскивая все содержимое из базы данных для проверки?

Ответы [ 2 ]

50 голосов
/ 05 марта 2012

Вы можете использовать

Entry.objects.filter(name='name', title='title').exists()

Это вернет вам значения true / false.Когда вы используете count, orm генерирует запрос, который будет выполняться намного дольше, чем в существующем методе.Метод get вызовет исключение, когда объект не существует.

request.POST - это словарь, поэтому для проверки используемой вами базы данных, т.е.:

Entry.objects.filter(name=request.POST['name'], title=request.POST['title']).exists()
2 голосов
/ 05 марта 2012

Ответ на ваш вопрос «Да». Тем не менее, я думаю, что вы должны также изучить альтернативу для запросов к базе данных; создайте уникальный ключ на множестве полей, для которых не требуется дубликатов.

Теперь, чтобы ответить на ваш вопрос. Посмотрите документы Django для выполнения запроса:

https://docs.djangoproject.com/en/dev/topics/db/queries/

Короче говоря, если у вас есть модель данных для Thing, Thing.objects является интерфейсом для доступа к запросам. из документации (используя запись в блоге, в качестве примера в которой есть строковое поле "заголовок"):

Entry.objects.get(headline__exact="Man bites dog")

Полные возможности интерфейса - это то, что вы ожидаете от базы данных (существует широкий набор сравнений с данными, отличными от точных совпадений). Я бы посоветовал изучить документацию по вашей конкретной проблеме.

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