2017-02-15 2 views
0

У меня есть Джанго приложение «MyApp» с этим в model.py:Django 1.10.5: отношение «myapp_mymodel» не существует даже после миграции

И в той же папке, у меня есть migrations папки с пустые __init__.py и 2 файла:

from django.db import models 
from django.contrib.postgres.fields import ArrayField 

class Characteristic(models.Model): 
    name = models.CharField(max_length=200) 
    core = models.BooleanField(default=False) 
    synonyms = ArrayField(
     models.CharField(max_length=200, blank=True), 
     size=20 
     ) 

0001_initial.py:

from __future__ import unicode_literals 

import django.contrib.postgres.fields 
from django.db import migrations, models 


class Migration(migrations.Migration): 

    initial = True 

    dependencies = [ 
    ] 

    operations = [ 
     migrations.CreateModel(
      name='characteristics', 
      fields=[ 
       ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 
       ('name', models.CharField(max_length=200)), 
       ('synonyms', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=200), size=20)), 
      ], 
     ), 
    ] 

Второй файл:

from __future__ import unicode_literals 

from django.db import migrations, models 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('myapp', '0001_initial'), 
    ] 

    operations = [ 
     migrations.AddField(
      model_name='characteristics', 
      name='core', 
      field=models.BooleanField(default=False), 
     ), 
    ] 

Однако в представлении, при попытке создать экземпляр модели:

characteristic = Characteristic(name=attribute.decode('utf-8'), synonyms=[]) 
characteristic.save() 

Я получаю сообщение об ошибке:

ProgrammingError: relation "myapp_characteristic" does not exist 

я сделал: python manage.py makemigrations myapp и у меня есть на наверху файла from myapp.models import Characteristic

Кто-нибудь знает, где я ошибаюсь?

ответ

1

Команда Makemigrations только создает миграции для изменений в базе данных. Он выполняет любые модификации в БД.

python manage.py migrate 

над командой выполняет фактическую модификацию в базе данных и создает запись в таблице миграции. так что Django может понять, какие миграции действительно переносятся

Смежные вопросы