Django 迁移,MyModel.objects.get() 返回空列表

Django migration, MyModel.objects.get() returning empty list

使用 Django 1.8.2,我正在尝试在一个模型上进行迁移。

这是模型的一个例子:

class Question(models.Model):
    module = models.ForeignKey(Module)
    my_order = models.PositiveIntegerField(default=0, blank=False, null=False)
    question = models.CharField(max_length=400)

这里是迁移:

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

from django.db import models, migrations

def save_answer(apps, schema_editor):
    question_model = apps.get_model("modules", "question")
    print question_model
    question_list = question_model.objects.all()
    print question_list
    for question in question_list:
        #some changes here
        question.save()

class Migration(migrations.Migration):

    dependencies = [
        ('modules', '0002_auto_20160212_1940'),
    ]

    operations = [
        migrations.RunPython(save_answer),
    ]

我根据此文档创建了它:https://docs.djangoproject.com/fr/1.8/topics/migrations/#data-migrations

我的问题是,即使数据库中有 Question 对象,question_list 也总是空的。 然而,打印 question_model 工作正常,所以我想我有正确的模型。 然后我就不明白为什么我获取不到相应的对象

如有任何帮助,我们将不胜感激,

谢谢,

泽维尔

编辑: 事实上,我发现我的问题可能不在迁移本身,因为当我使用 python manage.py migrate 时一切正常,但是当我使用我的 makefile 重新初始化数据库时,错误发生了。 这是生成文件:

reinit-database:
    psql -c "DROP DATABASE myDataBase" || true
    psql -c "CREATE DATABASE myDataBase"
    find . -type d -name "migrations"
    find . -type f -name "*.pyc" -delete
    python manage.py reset_db
    python manage.py migrate auth || true
    python manage.py migrate
    make load-fixtures
    python manage.py createsuperuser

然后我真的不明白它不起作用的原因是什么,但现在我知道了一个技巧...

无论如何,如果有人知道发生了什么,我很感兴趣!

泽维尔

您的代码看起来不错。唯一的问题是您正在打印 qcm_list。那是什么?