Edita: Il semble y avoir une certaine confusion sur ce que je demande. Ce modèle est pour le Vue de Postgres que j'ai créé dans la migration 0009. J'avais l'impression que Django ne génère pas de migration pour un modèle s'il possède l'attribut managed = False
option. Cependant, il essaie toujours de la créer.
Par ailleurs, j'utilise Django 1.8 avec Python 3.4.
J'ai des difficultés à créer un modèle Django pour une vue Postgres, en utilisant ces liens comme guide : drdaeman y de l'eceppda réponse en Puis-je utiliser une vue de base de données comme modèle dans Django ? . J'ai aussi regardé l'entrée Options.managed dans Documentation de l'API de Django . Cependant, même avec cela, il crée une migration qui ajoute une table pour le modèle de la vue.
Voici mon code jusqu'à présent :
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/migrations/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)
]
Qu'est-ce que je fais de mal ?