一對多模型:關係字段定義在多的一端中;一對多中,外鍵對應的是主表的一個對象,而不是一個單純的idpython
多對多模型:自動生成第三張表,第三張表爲關係表;先實例化對象添加兩張表,而後再添加關係數據庫
生成遷移文件: python manage.py makemigrationsdjango
執行遷移(生成表): python manage.py migrateurl
null:容許爲空,默認值是 Falsespa
db_column:字段的名稱,若是未指定,則使用屬性的名稱code
元選項對象
設置數據庫裏的表名,通常數據庫遷移後的表名爲:應用名_模型類名blog
class Meta():排序
tb_table = '表名'索引
模型類操做:
1.實例化模型類:ob = models.Users()
2.添加實例屬性方法:①.ob.name = "張三"
data = {'name':'張三'}
②.ob = models.Users(**data)
3.實例的方法: delete:刪除
save():保存
模型查詢集:
values():一個對象構成一個字典,而後構成一個列表返回
返回單個值的方法
其餘查詢方法:
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"