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#追加