詳細(xì)閱讀:(http://www.cnblogs.com/wupeiqi/articles/5246483.html)
app:
migrations 數(shù)據(jù)修改表結(jié)構(gòu)
admin Django為我們提供的后臺管理
apps 配置當(dāng)前app
models ORM,寫指定的類 通過命令可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)
tests 單元測試
views 業(yè)務(wù)代碼
四.ORM操作
select * from tb where id > 1
# 對應(yīng)關(guān)系
models.tb.objects.filters(id__gt=1)
models.tb.objects.filters(id=1)
models.tb.objects.filters(id__lt=1)
a.修改settings.py
'''
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
'''
b.創(chuàng)建類
# app01_userinfo
class UserInfo(models.Model):
# Django自動(dòng)創(chuàng)建id列,自增,主鍵
# 用戶名列,字符串類型,指定長度
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
c.執(zhí)行命令
(python manage.py makemigrations)[創(chuàng)建表]
(python manage.py migrate)[生成數(shù)據(jù)庫]
d.*************注意*******************
python3沒有MySQLdb模塊
要用pymysql模塊
如果要連接mysql的話
要在s14day19_2\__init__.py目錄修改__init__.py
添加以下代碼:
'''
import pymysql
pymysql.install_as_MySQLdb()
'''
django默認(rèn)使用MySQLdb模塊連接MySQL
主動(dòng)修改為pymysql:在project同名文件夾下的__init__文件中添加如下代碼即可:
'''
import pymysql
pymysql.install_as_MySQLdb()
'''
1. 根據(jù)類自動(dòng)生成創(chuàng)建數(shù)據(jù)庫系統(tǒng)表
# app下的models.py
python manage.py makemigrations
python manage.py migrate
字段:
字符串類型
數(shù)字
時(shí)間
二進(jìn)制
自增(primary_key=True)
字段的參數(shù):
null(db是否可以為空) 數(shù)據(jù)庫中字段是否可以為空
db_column(列名) 數(shù)據(jù)庫中字段的列名
db_tablespace
default(默認(rèn)值) 數(shù)據(jù)庫中字段的默認(rèn)值
primary_key(主鍵) 數(shù)據(jù)庫中字段是否為主鍵
db_index(索引) 數(shù)據(jù)庫中字段是否可以建立索引
unique(唯一索引) 數(shù)據(jù)庫中字段是否可以建立唯一索引
unique_for_date 數(shù)據(jù)庫中字段【日期】部分是否可以建立唯一索引
unique_for_month 數(shù)據(jù)庫中字段【月】部分是否可以建立唯一索引
unique_for_year 數(shù)據(jù)庫中字段【年】部分是否可以建立唯一索引
auto_now(創(chuàng)建時(shí),自動(dòng)生成時(shí)間)
auto_now_add(更新時(shí),自動(dòng)更新為當(dāng)前時(shí)間)
choices(django admin中顯示下拉框,避免連表查詢) Admin中顯示選擇框的內(nèi)容,用不變動(dòng)的數(shù)據(jù)放在內(nèi)存中從而避免跨表操作
blank(django admin是否可以為空) Admin中是否允許用戶輸入為空
verbose_name(django admin顯示字段中文) Admin中顯示的字段名稱
editable(django admin是否可以編輯) Admin中是否可以編輯
error_messages
help_text(django admin提示)
validators(django form,自定義錯(cuò)誤信息)
# obj = UserGroup.objects.filter(id=1).update(caption='CEO')
# obj = UserGroup.objects.filter(id=1).first()
# obj.caption = "CEO"
# obj.save()
help_text Admin中該字段的提示信息
如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1)
error_messages 自定義錯(cuò)誤信息(字典類型),從而定制想要顯示的錯(cuò)誤信息;
字典?。簄ull, blank, invalid, invalid_choice, unique, and unique_for_date
如:{'null': "不能為空.", 'invalid': '格式錯(cuò)誤'}
validators 自定義錯(cuò)誤驗(yàn)證(列表類型),從而定制想要的驗(yàn)證規(guī)則
from django.core.validators import RegexValidator
from django.core.validators import EmailValidator,URLValidator,DecimalValidator,\
MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator
如:
test = models.CharField(
max_length=32,
error_messages={
'c1': '優(yōu)先錯(cuò)信息1',
'c2': '優(yōu)先錯(cuò)信息2',
'c3': '優(yōu)先錯(cuò)信息3',
},
validators=[
RegexValidator(regex='root_\d+', message='錯(cuò)誤了', code='c1'),
RegexValidator(regex='root_112233\d+', message='又錯(cuò)誤了', code='c2'),
EmailValidator(message='又錯(cuò)誤了', code='c3'), ]
)
參數(shù)
2. 根據(jù)類對數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行各種操作
一對多:
a.外鍵
b.
外鍵字段_id
c.
models.tb.object.create(name='root',user_group_id=1)
d.
userlist = models.tb.object.all()
for row in userlist:
row.id
row.user_group_id
row.user_group.caption