Django
Отображение строк в строки с помощью HStoreField - поле PostgreSQL
Поиск…
Синтаксис
- FooModel.objects.filter (field_name__key_name = 'значение для запроса')
Настройка HStoreField
Во-первых, нам нужно будет сделать некоторые настройки для работы HStoreField
.
- убедитесь, что
django.contrib.postgres
находится в вашем `INSTALLED_APPS - Добавьте
HStoreExtension
в свои миграции. Не забудьте поставитьHStoreExtension
перед любымиCreateModel
илиAddField
.
from django.contrib.postgres.operations import HStoreExtension
from django.db import migrations
class FooMigration(migrations.Migration):
# put your other migration stuff here
operations = [
HStoreExtension(),
...
]
Добавление HStoreField к вашей модели
->
Примечание: сначала убедитесь, что вы установилиHStoreField
прежде чем продолжить этот пример. (выше)
Для инициализации HStoreField
не требуются HStoreField
.
from django.contrib.postgres.fields import HStoreField
from django.db import models
class Catalog(models.model):
name = models.CharField(max_length=200)
titles_to_authors = HStoreField()
Создание экземпляра новой модели
Передайте родные словарные строки для python для строк для create()
.
Catalog.objects.create(name='Library of Congress', titles_to_authors={
'Using HStoreField with Django': 'CrazyPython and la communidad',
'Flabbergeists and thingamajigs': 'La Artista Fooista',
'Pro Git': 'Scott Chacon and Ben Straub',
})
Выполнение ключевых поисков
Catalog.objects.filter(titles__Pro_Git='Scott Chacon and Ben Straub')
Использование содержит
Передайте объект dict
аргументу field_name__contains
в качестве аргумента ключевого слова.
Catalog.objects.filter(titles__contains={
'Pro Git': 'Scott Chacon and Ben Straub'})
Эквивалентен оператору SQL `@>`.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow