---
# System prepended metadata

title: django入門(六) — 簡單範例(4)-資料模型與填充程式
tags: [django]

---

###### tags: `django`
# django入門(六) — 簡單範例(4)-資料模型與填充程式
## IT邦連結(需使用電腦版瀏覽器):[點我前往](https://ithelp.ithome.com.tw/users/20145754/articles)

全部文章:
[django入門(一) — 介紹與設定開發環境](https://hackmd.io/@aroncode/SkVeqBO2K)
[django入門(二) — 建立資料庫與專案](https://hackmd.io/@aroncode/rkqgL_unY)
[django入門(三) — 簡單範例(1)-建立app](https://hackmd.io/@aroncode/H1qirFdhF)
[django入門(四) — 簡單範例(2)-範本與範本繼承](https://hackmd.io/@aroncode/rkFuiwKnY)
[django入門(五) — 簡單範例(3)-靜態檔](https://hackmd.io/@aroncode/ByL4dFO2Y)
[django入門(六) — 資料模型與填充程式](https://hackmd.io/@aroncode/BJot2iRnF)
[django入門(七) — Django ORM操作](https://hackmd.io/@aroncode/SJec_hA3Y)
## 建立資料表
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('Stock ... ', 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入門(二) — 建立資料庫與專案](https://hackmd.io/@aroncode/rkqgL_unY))
進入虛擬環境後，再到專案目錄。

```
(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 %}
```

重新啟動伺服器，回到瀏覽器即可看到成果。

