在postgres hstore迁移时,Django测试失败

Sou*_*Dev 5 django django-models django-testing django-postgresql

我在我的django应用程序中使用postgres,我在数据库中手动创建了hstore扩展.但是,当我运行测试时,它会尝试创建一个新数据库,并在找不到hstore扩展时失败.

我收到以下错误:

django.db.utils.ProgrammingError: hstore type not found in the database. please install it from your 'contrib/hstore.sql' file
Run Code Online (Sandbox Code Playgroud)

我按照这篇文章更新了我的迁移,结果如下:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
from django.conf import settings
from django.contrib.postgres.operations import HStoreExtension
import django.contrib.postgres.fields
import django.contrib.postgres.fields.hstore


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        HStoreExtension(),
        migrations.CreateModel(
        name='AppUser',
        fields=[
            ('id', models.AutoField(serialize=False, verbose_name='ID', primary_key=True, auto_created=True)),
            ('created_date', models.DateTimeField(auto_now_add=True)),
            ('modified_date', models.DateTimeField(auto_now=True)),
            ('lock', models.BooleanField(default=False)),
            ('username', models.CharField(max_length=100)),
            ('email', models.EmailField(max_length=150)),
            ('social_data', django.contrib.postgres.fields.hstore.HStoreField(blank=True, default='')),
            ('phone_number', models.CharField(max_length=15)),
            ('photo', models.URLField(blank=True)),
            ('gender', models.TextField(max_length=6)),
            ('badges', django.contrib.postgres.fields.ArrayField(size=None, base_field=models.CharField(max_length=30))),
        ],
        options={
            'abstract': False,
        },
    ),
    ]
Run Code Online (Sandbox Code Playgroud)

M.V*_*oid 6

文件中所述:

使用此软件包时,不会自动安装hstore扩展:您必须手动安装它.

为此,您必须连接到数据库并创建扩展:

CREATE EXTENSION hstore;
Run Code Online (Sandbox Code Playgroud)

要运行测试,必须在template1数据库上安装hstore扩展.要在template1上安装hstore:

$ psql -d template1 -c 'create extension hstore;'
Run Code Online (Sandbox Code Playgroud)

对我来说,它就像一个魅力!:)

检查扩展是否正常工作:与对应用户连接到所需的数据库,并发出:

`CREATE table test(id serial,value hstore);'

CREATE TABLE如果一切正常,你应该得到:回复.