Редактировать: кажется, есть некоторая путаница в том, что я спрашиваю. Эта модель предназначена для представления Postgres, которое я создал при миграции. 0009. У меня сложилось впечатление, что Django не будет генерировать миграцию для модели, если у нее есть опция managed = False
. Тем не менее, он все еще пытается создать его.
Кроме того, я использую Django 1.8 с Python 3.4.
У меня возникли проблемы с созданием модели Django для представления Postgres, используя эти ссылки в качестве руководства: drdaeman и ответ eceppda в Могу ли я использовать представление базы данных в качестве модели в django. Я также просмотрел запись Options.managed в Документация по API Django. Однако даже при этом создается миграция, которая добавляет таблицу для модели представления.
Это мой код до сих пор:
foo/models.py
class RelevantModel(models.Model):
rebate_pool_total = models.OneToOneField('foo.VirtualTotal', null=True)
total = models.DecimalField(null=True, decimal_places=2, max_digits=32)
class VirtualTotal(models.Model):
relevant_model = models.ForeignKey('foo.RelevantModel')
total = models.DecimalField(null=True, decimal_places=2, max_digits=32)
class Meta:
managed = False
foo/миграции/0009_add_foo_view.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('foo', '0008_previous_migration'),
]
sql = """
create VIEW foo_virtualtotal AS
SELECT rest of view...
"""
operations = [
migrations.RunSQL('DROP VIEW IF EXISTS foo_virtualtotal;'),
migrations.RunSQL(sql)
]
Что я делаю неправильно?
managed = False
говорит Django не генерировать миграции для этой таблицы. - person NJP   schedule 30.06.2016Options.managed
: docs.djangoproject.com /en/1.8/ref/models/options/#managed. Я неправильно истолковываю это? Впервые я прочитал об этом в этом ответе SO: stackoverflow.com/questions/507795/. - person NJP   schedule 01.07.2016