Как запустить команду postgres после инициализации базы данных с помощью Django?

, когда я использую var tf intf = & amp; t1, Это правильно. Но когда я использую var tf intf = & amp; t1, это не

. Так как в вашем примере вы используете tf intf = t1 (и он не компилируется), я думаю, вы, вероятно, имели в виду:

, когда я использую var tf intf = & amp; t1, Правильно Но когда я использую var tf intf = t1, это не

Итак, вопрос в том, почему &T{"t1"} (указатель) выполняет интерфейс intf, а T{"t1"} (значение) этого не делает.

В вашем примере интерфейс имеет два метода M1 и M2.

Тип T реализует оба метода BUT:

  • M1 имеет T значение в качестве приемника
  • M2 имеет T указатель в качестве приемника

Итак, почему компилятор рассматривает T, чтобы оба метода были реализованы, но считает, что значение T отсутствует?

Ответ можно найти здесь в спецификации:

https: // golang.org/ref/spec#Method_sets

Набор методов любого ot ее тип T состоит из всех методов, объявленных с типом приемника T. Набор методов соответствующего типа указателя * T представляет собой набор всех методов, объявленных с помощью приемника * T или T (то есть он также содержит набор методов T).

Спектр говорит, что указатель T имеет все методы, определенные с приемниками T и *T (поэтому в этом случае оба M1 и M2).

Но значение T имеет только методы, определенные с помощью приемника T (поэтому в этом случае только M1).

Поскольку интерфейс имеет оба метода, только его может выполнить только указатель.

0
задан Johan Vergeer 18 January 2019 в 17:44
поделиться

1 ответ

Вы должны создать миграцию, которая обрабатывает создание расширения для вас. Вот документы на него.

Вы должны сделать:

python manage.py makemigrations <APP_NAME> --empty

Затем в этой миграции импортировать:

from django.contrib.postgres.operations import CITextExtension

и добавить CITextExtension() в список migrations. Эта миграция должна зависеть от миграции, которая создала поле CITextField.

0
ответ дан schillingt 18 January 2019 в 17:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: