Django教程应用程序,第2部分。为什么丢失-在makemigrations命令后将字段“问题”添加到“选择”中?

时间:2019-06-28 14:31:44

标签: python django

我正在遵循2.2教程,编写第一个Django应用程序,第2部分。我像本教程一样在Question文件中创建了模型Choicepolls/models.py

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

我在mysite/settings.py文件中激活了轮询应用程序。

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

然后我运行命令makemigrations,但是在输出中缺少“-向选项中添加字段问题”。

$ python manage.py makemigrations polls
Migrations for 'polls':
  polls/migrations/0001_initial.py
    - Create model Question
    - Create model Choice

我正在使用以下版本:

/mysite$ pip freeze
Django==2.2.2
pkg-resources==0.0.0
pytz==2019.1
sqlparse==0.3.0

/mysite$ python --version
Python 3.7.3

我从头开始了整个教程。取消该项目并开始另一个失败的项目。

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,则表示您在运行python manage.py makemigrations polls时,会根据教程获得以下输出:

Migrations for 'polls':
  polls/migrations/0001_initial.py:
    - Create model Choice
    - Create model Question
    - Add field question to choice

但是,您得到了以下输出:

Migrations for 'polls':
  polls/migrations/0001_initial.py
    - Create model Question
    - Create model Choice

您不必担心缺少的- Add field question to choice输出。您没有遇到错误,一切似乎都井井有条。继续本教程。您将很快将模型表迁移到数据库,然后再迁移到play with the api。只要在外壳程序中浏览API时获得预期的输出,就可以正常工作。

一般而言,请记住,教程中显示的终端输出可能会因多种因素而略有不同,因此,如果情况不完全匹配,只需确保实际功能您正在实施的程序正在工作。

答案 1 :(得分:0)

我也一样 我正在从在线教程中学习, 我在迁移文件夹中看到了他的0001_initial.py文件 我的addfield丢失了,所以我复制了它。 现在显示相同的结果。 删除操作并将其粘贴:

operations = [
    migrations.CreateModel(
        name='Question',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('question_text', models.CharField(max_length=200)),
            ('pub_date', models.DateTimeField(verbose_name='date published')),
        ],
    ),
    migrations.CreateModel(
        name='Choice',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('choice_text', models.CharField(max_length=200)),
            ('votes', models.IntegerField(default=0)),
            ('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.Question')),
        ],
    ),
    migrations.AddField(
        model_name='choice',
        name='question',
        field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.Question'),
        preserve_default=True
    )
]