Models
一個模型通常用來確定數(shù)據的唯一性和來源信息,它包含要存儲的數(shù)據的基本字段和行為。通常陶冷,每個模型映射到一個數(shù)據庫表晌梨。
- 每個模型都是一個Python類桥嗤,該類集成了django.db.models.Model
- 模型的每個屬性表示一個字段
簡單的表模型
from django.db import models
class ScarpPort(models.Model):
# primary_key=True 表示為主鍵
# AutoField 表示為自增字段
id = models.AutoField(primary_key=True)
# max_length 表示為該字段最大長度
# CharField表示為字段類型為varchar
nick_name = models.CharField(max_length=64)
station_name = models.CharField(max_length=64)
scarp_car_type = models.CharField(max_length=64)
floor_spot_name = models.CharField(max_length=64)
drive_order_model = models.CharField(max_length=64)
# IntegerField 表示為該字段類型為int
status = models.IntegerField()
class Meta:
# 設置表名為scarp_port
db_table = 'scarp_port'
遷移數(shù)據庫
makemigrations
該命令會在每個app目錄下創(chuàng)建migrations目錄须妻,并在該目錄下生成數(shù)據庫遷移文件(可以在該文件中看到詳細的SQL語句)。
migrate
執(zhí)行遷移泛领,使用該命令會讀取settings文件中的INSTALL_APPS中的app 和 數(shù)據庫配置荒吏。
將app中的models文件遷移到數(shù)據庫中生成數(shù)據庫和表。
Field選項
verbose_name 和 help_text
id = models.AutoField(primary_key=True)
sn = models.CharField(max_length=64, verbose_name='訂單號')
scarp_port = models.CharField(max_length=64, verbose_name='廢料口', help_text='該任務由哪個廢料口創(chuàng)建')
type = models.IntegerField(choices=TYPE, verbose_name='類型')
status = models.IntegerField(choices=STATUS, default=0, verbose_name='狀態(tài)')
create_time = models.DateTimeField(verbose_name='創(chuàng)建時間')
start_time = models.DateTimeField(verbose_name='開始時間', null=True)
end_time = models.DateTimeField(verbose_name='完成時間', null=True)
相當于別名渊鞋,在django admin中字段標題將顯示為verbose_name,help_text 將顯示為幫助文檔
choices
class TransportOrder(models.Model):
TYPE = (
(0, 'EMPTY'),
(1, 'FULL')
)
STATUS = (
(0, 'DISPATCHABLE'),
(1, 'BEING_PROCESSED'),
(2, 'FINISHED'),
(3, 'FAILED')
)
id = models.AutoField(primary_key=True)
sn = models.CharField(max_length=64)
scarp_port = models.CharField(max_length=64)
# choices 設置為上面的TYPE元組
type = models.IntegerField(choices=TYPE)
# choices 設置為上面的STATUS元組
status = models.IntegerField(choices=STATUS, default=1)
create_time = models.DateTimeField()
start_time = models.DateTimeField()
end_time = models.DateTimeField()
class Meta:
db_table = 'transport_order'
由二元元組組成的選項條件绰更,如果使用了choices 在默認的表單中將會是一個選擇框,而不是標準的文本框锡宋,并且將選擇限制在元組中动知。
get_FOO_display()
元組的第一個元素將會存儲在數(shù)據庫中,第二個元素可以通過_display()顯示员辩,例如:
>>> t = TransportOrder(sn='123', type=0)
>>> t.save()
>>> t.type
1
>>> t.get_type_display()
'EMPTY'
class Meta
ording
設置排序規(guī)則
...
...
end_time = models.DateTimeField(verbose_name='結束時間', null=True)
class Meta:
ordering = ['create_time', 'order']
效果:
db_table
保存到數(shù)據庫中的表名
verbose_name
別稱
verbose_name_plural
別稱復數(shù)