django入门(六) — 简单范例(4)-资料模型与填充程序

建立资料表

stock/models.py

class Stock(models.Model):
    name = models.CharField(max_length=128, unique=True)
    content = models.TextField()
    price = models.FloatField()

    def __str__(self):
        return self.name

资料库迁移

makemigrations会产生迁移档用来产生资料表。

右键点击专案 → Django → Custom Command → Command: makemigrations → OK

会看到
Migrations for 'stock':
stock\migrations\0001_initial.py
- Create model Stock

之後接着

右键点击专案 → Django → Migrate

填充程序

这里我们已经成功建立资料表了
我们可以先写一个填充程序,来看看我们的资料模型是否正确。

专案目录建立一个populate的资料夹
下面建立三个py档分别为__init__.py、base.py、stock.py

populate/base.py

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demo.settings')
import django
django.setup()

populate/stock.py

from populate import base
from stock.models import Stock


stocks = ['台积电', '联电']
prices = [672.00, 62.70]
contents = ['台积电是台湾一家从事晶圆代工的半导体制造厂,总部位於新竹科学园区,主要厂房则分布於新竹市、台中市、台南市。','联华电子股份有限公司,简称联电,英文全名「United Microelectronics Corporation」']

def populate():
    print('start ... ', end='')
    Stock.objects.all().delete()

    for i in range(len(stocks)):
        stock=Stock()
        stock.name=stocks[i]
        stock.content=contents[i]
        stock.price=prices[i]
        stock.save()
    print("success")
if __name__ == '__main__':
    populate()

接着我们进入虚拟环境(忘记怎麽进去可以看django入门(二) — 建立资料库与专案)
进入虚拟环境後,再到专案目录。

(stockVenv)C: ..\web\workspace\demo>python -m populate.stock

看到success就代表我们成功填充资料了!

显示资料

stock/views.py把stock改成下面的code

from django.shortcuts import render
from stock.models import Stock


def stock(request):
    stocks = Stock.objects.all()
    context = {'stock':'stock page',
               'stocks':stocks}
 
    return render(request, 'stock/stock.html', context)

stock/templates/stock/stock.html
将下方code放到block content内

<br>
{% for stock in stocks %}
<div align="left">
  <h3>名称:{{ stock.name }}</h3>
  <p>当前股价:{{ stock.price }}</p>
  <p>简介:{{ stock.content }}<p>
  <hr>
</div>
{% endfor %}

重新启动服务器,回到浏览器即可看到成果。

补充:model栏位资料型态

ForeignKey:一对多关联
DateField:日期
DateTimeField:日期时间
FloatField:浮点数
IntegerField:整数
TextField:可存大量的文字


<<:  django入门(五) — 简单范例(3)-静态档

>>:  [EXCEL]危险的SUMIFS函数

Day 27: 架构的声音、整洁的架构 (待改进中... )

「你的应用程序架构尖叫了什麽呢? 当查看最高层目录结构和 package 中的原始码档案时,他们是...

[GAS] GBC上运作的Hello world!

在前面章节中,我们已经写过 2 个 hello world作业,接下来要将 hello world...

难搞的字串符

字符串编码转换 在 python3.x 中,默认采用编码格式为UTF-8 在 python 中,有两...

PDFWriter 随笔:终於能内嵌 OTF了

(PDFWriter 是一个正在开发的 PHP PDF Library) 这两周花了不少时间研究 O...

Day 6 Odoo的Form View

Odoo模组开发实战 目录 VIEW-Form View 第一章 VIEW-Form View 1....