今天开始建立App中的第一个Model,命名为Tutorial. Model的定义在main文件夹下的models.py中通过类进行,我们希望Tutorial这个model包含三个属性:标题、内容和发布日期,因此修改models.py的内容如下:

from django.db import models

# Create your models here.
class Tutorial(models.Model):
    tutorial_title = models.CharField(max_length=200)
    tutorial_content = models.TextField()
    tutorial_published = models.DateTimeField('date published')

    def __str__(self):
        return self.tutorial_title

对与title我们使用了CharField,对于content我们使用了TextField,他们的区别在于CharField一般用于有长度限制的内容,TextFeild一般没有长度限制。详细解释可参考帮助文档

这里我们写完了Tutorial这个model,接下来我们需要将这个model安装到我们的app中,这一步在settings.py中进行设置,我们在INSTALLED_APPS中添加'main.apps.MainConfig',那么MainConfig在哪里呢?我们打开main文件夹下的apps.py即可看到MainConfig这个类,settings.py中的INSTALLED_APPS添加后内容如下:

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

接下来我们需要进行数据迁移(migration),每次对model做出改变都需要进行一次迁移,迁移包括两个步骤makemigrations和migrate。在命令行进行如下操作:

python manage.py makemigrations
执行完后,在执行下句: python manage.py migrate

然后再mysite/main/migrations这个文件夹下生成了一个文件0001_initial.py,可以打开查看其内容。

 

接下来我们可以通过sql语句来建立一个Tutoria模型,在命令行输入:

 python manage.py shell 

然后输入:

from django.utils import timezone

new_tutorial = Tutorial(tutorial_title='Title1',tutorial_content='This is some text', tutorial_published=timezone.now())

new_tutorial.save()

for t in Tutorial.objects.all():
... print(t.tutorial_title)

即可看到输出Title1。另外也可通过数据库查看软件来查看具体内容,django默认使用的数据库是sqlite,在mysite这个文件夹下可以看到一个文件db.sqlite3。通过安装Navicat Premium可以查看各种数据库,如下图为刚刚创建的内容:

Anaconda+django写出第一个web app(二)

 

 

 

 

 

 

 

 

 

之后添加的内容都可以在此清楚的查看,非常方便。

参考链接:

[1] https://pythonprogramming.net/models-django-tutorial/