Django一對一查詢,列類型及參數

一對一查詢

表的建立

# 經過 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) """
相關文章
相關標籤/搜索