Django教程[第二部分]

Django官方文档教程2

请简述

数据库设置 (phpMyAdmin,MySQL,Django==2.1)

import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
    'default': {
        #'ENGINE': 'django.db.backends.sqlite3',
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        "ENGINE": 'django.db.backends.mysql',
        "NAME": "tutorial",#任意(phpMyAdmin側で作成したdb名)
        "USER": "root",
        "PASSWORD": "root",
        "HOST": "127.0.0.1",
        "PORT": "3306",
    }
}

在数据库中创建表

$ python manage.py migrate

模型创建

[用于Python代码的名字] = models.[指定的数据类型]Field(参数)
models.ForeignKey([要关联的模型名称], on_delete=models.[关联对象的处理方式])
这将告诉Django每个Choice都与一个Question相关联。
(有关on_delete的更多信息请参见此处)

#polls/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',
]
#------------------------------
# polls/apps.py
from django.apps import AppConfig

class PollsConfig(AppConfig):#ここを参照して追加
    name = 'polls'

使用makemigrations命令,向Django传达了模型已经发生了更改的信息。

$ python manage.py makemigrations polls

请再次运行迁移命令,以便在数据库中创建模型的表格。

$ python manage.py migrate

以下的三个步骤非常重要。

    • モデルを変更する (models.py の中の)

 

    • これらの変更のためのマイグレーションを作成するために $ python manage.py makemigrations を実行します。

 

    データベースにこれらの変更を適用するために $ python manage.py migrate を実行します。

定义方法self.str(): 返回self.question_text

如果按照以下方式操作,就可以避免成为一个问题对象(1)。(按照教程的指示,将显示”What’s up?”)

#polls/models.py
class Question(models.Model):
    question_text = models.CharField(max_length = 200)
    pub_date = models.DateTimeField("date published")
    def __str__(self):#追加
        return self.question_text#追加

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete = models.CASCADE)
    choice_text = models.CharField(max_length = 200)
    votes = models.IntegerField(default = 0)
    def __str__(self):#追加
        return self.choice_text#追加
广告
将在 10 秒后关闭
bannerAds