ในขั้นแรก เราจะสร้าง app ใหม่ใน project ขึ้นมาก่อน เนื่องจากใน Django ถ้าจะสร้าง models (database layers ของ Django) จะต้องสร้าง Django app ขึ้นมา เพราะ models จะต้องอยู่ใน app
Create Django App
เราสามารถสร้าง Django App โดยใช้คึำสั่ง
python manage.py startapp app_name
ในตัวอย่างเราจะสร้าง app ที่ชื่อ books => python manage.py startapp books
Django จะสร้าง folder app_name พร้อมไฟล์อีก 4 ไฟล์
1. __init__.py
2. models.py
3. tests.py
4. views.py
Create Model
การสร้าง model นั้นเราสามารถสร้างโดยการแก้ไข models.py ใน app folder ลองดูตัวอย่างของ model
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
เป็นการสร้าง model ขึ้นมา 3 ตัว (เหมือนกับการกำหนด table ใน database ต่างกันตรงที่ใช้ไวยกรณ์ของ python)
Installing Model
หลังจากที่เราสร้าง Model (3 ตัว) เราจะทำการติดตั้ง model นี้ เนื่องจาก model ต้องอยุ่ใน app (book) เราจะทำการติดตั้ง books ไปใน project เรา โดยการแก้ไขตัวแปร INSTALLED_APPS ในไฟล์ settings.py
INSTALLED_APPS = (
# 'django.contrib.auth',
# 'django.contrib.contenttypes',
# 'django.contrib.sessions',
# 'django.contrib.sites',
'mysite.books',
)
หลังจากนั้นให้สร้าง table ตาม model นี้ใน database ตัว Django เอง มี utility ช่วยโดยใช้คำสั่ง syncdb
python manage.py syncdb
คำสั่งนี้จะช่วย sync ตัว model ที่เรามีอยู่ใหัตรงกับ database
ต่อไปเราจะมารู้จักกับวิธี access data กัน
Sunday, September 26, 2010
Learning Django: Create Model and Django App
Labels:
Create Django App,
Create Model,
Learning Django,
Model
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment