Django的ORM映射機(jī)制 20課知識點(diǎn)整理

詳細(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


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Web框架之Django: (1)簡介: Django是一個(gè)由Python寫成開源的重量級Web應(yīng)用框架,采用MT...
    老肖閱讀 3,165評論 0 18
  • 切換到創(chuàng)建項(xiàng)目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,539評論 2 3
  • 模塊間聯(lián)系越多,其耦合性越強(qiáng),同時(shí)表明其獨(dú)立性越差( 降低耦合性,可以提高其獨(dú)立性)。軟件設(shè)計(jì)中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,222評論 0 8
  • (一)、啟動(dòng)服務(wù)器 (二)、創(chuàng)建數(shù)據(jù)庫表 或 更改數(shù)據(jù)庫表或字段 Django 1.7.1及以上 用以下命令 1....
    夏天夏星閱讀 5,956評論 0 17
  • 生活在魔都,有各種未經(jīng)歷的繁華,更有各種壓力縈繞,不經(jīng)歷一些事情,你不會(huì)懂得你原來那么需要努力,那么需要自強(qiáng),那么...
    靜待花開0608閱讀 520評論 0 0

友情鏈接更多精彩內(nèi)容