舉例html
id | name | age |
---|---|---|
1 | 張三 | 12 |
2 | 李四 | 58 |
id | salary | sp_id |
---|---|---|
1 | 100 | 1 |
2 | 400 | 2 |
class UserInfo(models.Model): name = models.CharField(max_length=32, null=True) age = models.IntegerField(null=True) class Private(models.Model): salary = models.CharField(max_length=32, null=True) sp = models.OneToOneField("UserInfo", null=True) #oneTooneField: 一對一, 默認要求該字段必須是惟一的 unique 外鍵關係
models.UserInfo.objects.create(name='張三',age=12) models.Private.objects.create(salary=100,sp_id=1)
#從母表查詢子表中的數據 #方法1:res = models.UserInfo.objects.filter(name='張三').first().private.salary #子表表名小寫.子表字段名 #方法2:res = models.UserInfo.objects.filter(name='張三').values('private__salary')
#從子表查詢母表信息 #方法1:res = models.Private.objects.filter(salary='100').first().sp.name #方法2:res = models.Private.objects.values('sp__name'):
class Boy(models.Model): bname = models.CharField(max_length=30,null=True) class Girl(models.Model): gname = models.CharField(max_length=30,null=True) class Boy2Girl(models.Model): b = models.ForeignKey('Boy',null=True) g = models.ForeignKey('Girl',null=True) #聯合惟一屬性 class Meta: unique_together=[ ('b','g') ]
import random boys =[ models.Boy(bname='男1'), models.Boy(bname='男2'), models.Boy(bname='男3'), models.Boy(bname='男4'), models.Boy(bname='男5'), models.Boy(bname='男6') ] res = models.Boy.objects.bulk_create(boys) girls =[ models.Girl(gname='女1'), models.Girl(gname='女2'), models.Girl(gname='女3'), models.Girl(gname='女4'), models.Girl(gname='女5'), models.Girl(gname='女6'), models.Girl(gname='女7'), models.Girl(gname='女8'), ] models.Girl.objects.bulk_create(girls) a = [ models.Boy2Girl(b_id=random.randint(1,6),g_id=1), models.Boy2Girl(b_id=random.randint(1,6),g_id=2), models.Boy2Girl(b_id=random.randint(1,6),g_id=3), models.Boy2Girl(b_id=random.randint(1,6),g_id=4), models.Boy2Girl(b_id=random.randint(1,6),g_id=5), models.Boy2Girl(b_id=random.randint(1,6),g_id=6), models.Boy2Girl(b_id=random.randint(1,6),g_id=7), models.Boy2Girl(b_id=random.randint(1,6),g_id=8), ] models.Boy2Girl.objects.bulk_create(a)
#經過關係表查詢,查boy位男1對於的女的信息 #方法1:res = models.Boy2Girl.objects.filter(b__bname='男1').values('g__gname') #方法2: res = models.Boy2Girl.objects.filter(b__bname='男1').all() for a in res: print(res.g.gname) #經過boy表查女的信息 #方法1: res = models.Boy.objects.filter(bname='男1').values('boy2girl__g__gname') #方法2: res = models.Boy.objects.filter(bname='男1').all() for a in res: for b in a.boy2girl_set.all(): print(b.g.gname)
class Boy1(models.Model): bname = models.CharField(max_length=32, null=True) g = models.ManyToManyField('Girl', null=True) #他會生成一個boy1_g的表 class Girl1(models.Model): gname = models.CharField(max_length=32, null=True)
boys =[ models.Boy(bname='男1'), models.Boy(bname='男2'), models.Boy(bname='男3'), models.Boy(bname='男4'), models.Boy(bname='男5'), models.Boy(bname='男6') ] res = models.Boy1.objects.bulk_create(boys) # girls =[ models.Girl(gname='女1'), models.Girl(gname='女2'), models.Girl(gname='女3'), models.Girl(gname='女4'), models.Girl(gname='女5'), models.Girl(gname='女6'), models.Girl(gname='女7'), models.Girl(gname='女8'), ] models.Girl1.objects.bulk_create(girls)
創建二者關係python
添加
|刪除
|查詢
girl的id添加(add)mysql
models.Boy1.objects.filter(bname='男1').first().g.add(1,2,3,4,5,2) #會自動去重保持惟一性也不會由於相同而報錯
刪除(remove)sql
models.Boy1.objects.filter(bname='男1').first().g.remove(1)
查詢(all)數據庫
models.Boy1.objects.filter(bname='男1').first().g.all()
清除(clear)django
models.Boy1.objects.filter(bname='男1').first().g.clear() #清除全部
add進行添加時候若是有會自動去重,他自帶聯合惟一的效果dom
https://www.cnblogs.com/pythonywy/p/11353202.html看這裏code
數據類型 | mysql | djamgo-orm |
---|---|---|
數字 | tinyint | 不存在 |
- | smallint | SmallIntegerField(有符號) PositiveSmallIntegerField(沒符號) |
- | mediumint | 不存在 |
- | int (unsigned) | IntegerField(有符號)PositiveIntegerField(沒符號) |
- | bigint | BigIntegerField(有符號) PositiveBigIntegerField(沒符號) |
- | decimal | DecimalField |
- | float | FloatField |
- | double | 不存在 |
字符串 | char | 不存在 |
- | varchar | CharField |
- | text | TextField |
時間日期 | date | DateField |
- | datetime | DateTimeField |
- | timestamp | 不存在 |
null 數據庫中字段是否能夠爲空 db_column 數據庫中字段的列名 default 數據庫中字段的默認值 primary_key 數據庫中字段是否爲主鍵 db_index 數據庫中字段是否能夠創建索引 unique 數據庫中字段是否能夠創建惟一索引 class Meta: ### 聯合惟一索引 unique_together=[ ('b', 'g') ] #### 聯合索引 index_together = [ ('b', 'g') ]
字符串類型
對應信息是否是郵箱格式進行驗證字符串類型
,Django Admin以及ModelForm中提供驗證 IPV4 機制字符串類型
,Django Admin以及ModelForm中提供驗證 Ipv4和Ipv6
字符串類型
,Django Admin以及ModelForm中提供驗證 URL字符串類型
,Django Admin以及ModelForm中提供驗證支持 字母、數字、下劃線、鏈接符(減號)字符串類型
,格式必須爲逗號分割的數字字符串類型
,Django Admin以及ModelForm中提供對UUID格式的驗證字符串
,Django Admin以及ModelForm中提供讀取文件夾下文件的功能
字符串類型
路徑保存在數據庫,文件上傳到指定目錄
verbose_name:Admin中顯示的字段名稱orm
blank:Admin中是否容許用戶輸入爲空htm
editable:Admin中是否能夠編輯
help_text:Admin中該字段的提示信息
choices:Admin中顯示選擇框的內容,用不變更的數據放在內存中從而避免跨表操做
error_messages: 自定義錯誤信息(字典類型),從而定製想要顯示的錯誤信息;