一對一查詢
表的建立
# 經過 OneToOneField 建立一對一的關係 from django.db import models # Create your models here. class StaffInfo(models.Model): name = models.CharField(max_length=32, null=True) age = models.CharField(max_length=32, null=True) class Salary(models.Model): money = models.CharField(max_length=32, null=True) staff = models.OneToOneField("StaffInfo")
增刪改查
# 增 和普通同樣 models.StaffInfo.objects.create(name="xxx", age=12) models.Salary.objects.create(money=3000, staff_id=2) # 一對一關聯的外鍵若是添加劇復會報錯,也就是說django已經幫咱們作好了惟一索引 # 刪 和普通的也是同樣的 models.Salary.objects.filter(staff_id=2).delete() # 也有級聯刪除的問題, 能夠經過on_delete 修改值取消級聯刪除 # 改 和普通也同樣 models.Salary.objects.filter(staff_id=2).update(money=2000) # 查 分爲正查和反差兩種 # 正查 經過點表中外鍵名跨表查詢 row.staff.name res = models.Salary.objects.all() for row in res: print(row.money, row.staff.name) # 反差 點關聯表的代表小寫進行跨表查詢 row.salary.money res = models.StaffInfo.objects.all() for row in res: print(row.name, row.salary.money)
列類型
django中的列類型咱們主要經過和MySQL中列類型對比來看python
""" MySQL列類型 Django列類型 tinyint 無 smallint (unsigned) SmallIntegerField (PositiveSmallIntegerField) 數字類型 int (unsigned) IntegerField (PositiveSmallIntegerField) mediumint 無 bigint (unsigned) BigIntegerField (PositiveBigIntegerField) float FloatField decimal(5,2)表示小數2位,最大長度5位 DecimalField char 無 字符串類型 varchar VarCharField text TextField 時間類型 datetime(2019-7-1 1:1:1) DateTimeField date (2019-7-1) DateField """
參數
""" max_length 最大長度 null 是否爲空 default 默認值 do_index 添加普通索引 unique 添加惟一索引 unique_together 聯合惟一索引 index_together 惟一索引 這兩個聯合索引須要放在 類Meta中 class Meta: unique_together = ( ("字段1", "字段2"), ...... ) index_together = ( ("字段1", "字段2"), ...... ) """
django-admin
django-admin主要是django給咱們提供的後臺管理系統,咱們能夠在裏面對數據進行增刪改查數據庫
一、django-admin如何打開django
urlpatterns = [ url(r'^admin/', admin.site.urls), ]
咱們建立項目時會自動生成以下rui 在瀏覽器輸入對應的url便可進入django-admin瀏覽器
二、建立用戶app
""" 終端輸入: python manage.py createsuperuser 輸入用戶名 郵箱(可不寫) 密碼 """
三、想要管理本身生成的表ui
須要在本身對應app的admin.py文件中註冊一下url
from app02 import models admin.site.register(models.Student) admin.site.register(models.Teacher)
四、django-admin中的列類型與參數spa
如下的類型只有在django-admin的管理後臺中起做用code
""" 前面爲列類型, 括號中是咱們從數據庫中看到的類型 EmailField(CharField) 字符串類型,admin以及modelform用來輸入驗證是否是合法的郵箱字符串 IPAddressField(Field) 字符串類型 admin以及modelform用來輸入IPV4 驗證 GenericIpAddressField(Field) 字符串類型 用來輸入 IPV4 以及 IPV6 驗證 參數: protocol 用於指定IPV4或IPV6 "both" "ipv4" "ipv6" unpack_ipv4 若是指定爲True 則輸入::ffff:192.0.2.1時候,可解析爲192.0.2.1,開啓此功能,須要protocol="both" URLField(CharField) 字符串類型 用來輸入url 驗證 SlugField(CharField) 字符串 用來輸入 數字 字母 下劃線 鏈接符(減號) 驗證 CommaSeparatedIntegerField(CharField) 字符串 驗證 形式必須爲 逗號分隔的數字 UUIDField(Field) 字符串 提供對uuid格式的驗證 FieldField(Field) 能夠選擇文件 在數據庫中看仍是字符串類型 django-admin中列的參數 verbose_name Admin中顯示的字段名稱(至關於給列名改個名字) blank Admin中是否容許用戶輸入爲空 editable Admin中是否能夠編輯(設爲False直接隱藏) help_text Admin中該字段的提示信息 choices Admin中顯示選擇框的內容 choice = ( (1,"男"), (2,"女"), ) 若是你選擇男,會把 1 存進數據庫中 由於性別是永遠不會變更的,因此用不變更的數據存在內存避免跨表操做 gender = IntegerField(choices=choices) """