django之模型關係

一對一模型:關係字段定義在任意一端中

一對多模型:關係字段定義在多的一端中;一對多中,外鍵對應的是主表的一個對象,而不是一個單純的idpython

多對多模型:自動生成第三張表,第三張表爲關係表;先實例化對象添加兩張表,而後再添加關係數據庫

生成遷移文件: python manage.py makemigrationsdjango

執行遷移(生成表): python manage.py migrateurl

字段類型

  • AutoField:自動增加的IntegerField,一般不指定,自動添加到模型中
  • BooleanField:true/false 字段,此字段的默認表單控制是CheckboxInput
  • CharField(max_length=字符長度):字符串,默認的表單樣式是 TextInput
  • TextField:大文本字段,通常超過4000使用,默認的表單控件是Textarea
  • IntegerField:整數
  • FloatField:用Python的float實例來表示的浮點數
  • DateField[auto_now=False, auto_now_add=False]):使用Python的datetime.date實例表示的日期TimeField:使用Python的datetime.time實例表示的時間DateTimeField:使用Python的datetime.datetime實例表示的日期和時間
    • 參數DateField.auto_now:每次保存對象時,自動設置該字段爲當前時間,用於"最後一次修改"的時間戳,它老是使用當前日期,默認爲false
    • 參數DateField.auto_now_add:當對象第一次被建立時自動設置當前時間,用於建立的時間戳,它老是使用當前日期,默認爲false
  • 字段選項

    • null:容許爲空,默認值是 Falsespa

    • db_column:字段的名稱,若是未指定,則使用屬性的名稱code

    • db_index:若值爲 True, 則在表中會爲此字段建立索引
    • default:默認值
    • primary_key:若爲 True, 則該字段會成爲模型的主鍵字段
    • unique:若是爲 True, 這個字段在表中必須有惟一值

元選項對象

設置數據庫裏的表名,通常數據庫遷移後的表名爲:應用名_模型類名blog

  class Meta():排序

    tb_table = '表名'索引

 

模型類操做:

1.實例化模型類:ob = models.Users()

2.添加實例屬性方法:①.ob.name = "張三"   

          data = {'name':'張三'} 

          ②.ob = models.Users(**data)

3.實例的方法:  delete:刪除

        save():保存

 

模型查詢集:

 

  • all()   獲取全部   ob = models.Users.objects.all()
  • filter()  篩選  ob = models.Users.objects.filter(id = 1)
  • exclude()  排除
  • order_by()  排序
  • values():一個對象構成一個字典,而後構成一個列表返回

返回單個值的方法

  • get():返回單個知足條件的對象count():返回當前查詢的總條數
    • 若是未找到會引起"模型類.DoesNotExist"異常
    • 若是多條被返回,會引起"模型類.MultipleObjectsReturned"異常
    • 第二個參數能夠給定一個默認值
  • first():返回第一個對象
  • last():返回最後一個對象

其餘查詢方法:

contains 包含: ob = models.Uses.objects.filter(name__contains='jack')

in:是否包含在範圍內 :ob = models.Uses.objects.filter(name__in=['jack','rose'])

gt、gte、lt、lte:大於、大於等於、小於、小於等於   ob = models.Uses.objects.filter(id__lte=5)

extra查詢方法:

ob = Types.objects.extra(select = {'paths':'concat(path,id)'}).order_by('paths') #等同於 select *,concat(path,id) as paths from types order by paths;

Q對象複雜查詢(filter至關於and查詢,而Q對象查詢至關於or查詢)

from django.db.models import Q
ob = Goods.objects.filter(Q(id__contains=v)|Q(title__contains=v))


class Users(models.Model):
username = models.CharField(max_length=10)
password = models.CharField(max_length=77)
age = models.IntegerField()
sex = models.CharField(choices=(('0','女'),('1','男')),max_length=10)
email = models.CharField(max_length=30,null=True)
phone = models.CharField(max_length=11)
pic_url = models.CharField(max_length=255,null=True)
status = models.IntegerField(default=0)
addtime = models.DateTimeField(auto_now_add=True)
   class Meta():
   db_table = "Users"
相關文章
相關標籤/搜索