国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Django數據模型中on_delete使用詳解

瀏覽:114日期:2024-09-15 18:20:19

on_delete屬性針對外鍵ForeignKey

一、django3.0官方文檔介紹:

Many-to-one relationships多對一關系

To define a many-to-one relationship, use django.db.models.ForeignKey. You use it just like any other Field type: by including it as a class attribute of your model.

ForeignKey requires a positional argument: the class to which the model is related.

For example, if a Car model has a Manufacturer ? that is, a Manufacturer makes multiple cars but each Car only has one Manufacturer ? use the following definitions:

from django.db import modelsclass Manufacturer(models.Model): # ... passclass Car(models.Model): manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE) # ...

You can also create recursive relationships (an object with a many-to-one relationship to itself) and relationships to models not yet defined; see the model field reference for details.

It’s suggested, but not required, that the name of a ForeignKey field (manufacturer in the example above) be the name of the model, lowercase. You can, of course, call the field whatever you want.

常見的使用方式(設置為null)

class ApiList(models.Model): desc = models.CharField(max_length=255, verbose_name='接口描述') keyword = models.CharField(max_length=100, verbose_name='請求關鍵字') response = models.TextField(verbose_name='響應結果') api = models.ForeignKey(Api, blank=True, null=True, on_delete=models.SET_NULL, verbose_name='所屬接口') status = models.IntegerField(default=1, verbose_name='狀態') create_at = models.CharField(max_length=20, verbose_name='創建時間') update_at = models.CharField(max_length=20, verbose_name='更新時間')

一對多(ForeignKey)

class ForeignKey(ForeignObject): def __init__(self, to, on_delete, related_name=None, related_query_name=None, limit_choices_to=None, parent_link=False, to_field=None, db_constraint=True, **kwargs): super().__init__(to, on_delete, from_fields=[’self’], to_fields=[to_field], **kwargs)

一對一(OneToOneField)

class OneToOneField(ForeignKey): def __init__(self, to, on_delete, to_field=None, **kwargs): kwargs[’unique’] = True super().__init__(to, on_delete, to_field=to_field, **kwargs)

從上面外鍵(ForeignKey)和一對一(OneToOneField)的參數中可以看出,都有on_delete參數,而 django 升級到2.0之后,表與表之間關聯的時候,必須要寫on_delete參數,否則會報異常:

TypeError: __init__() missing 1 required positional argument: ’on_delete’

因此,整理一下on_delete參數的各個值的含義:

on_delete=None,# 刪除關聯表中的數據時,當前表與其關聯的field的行為on_delete=models.CASCADE, # 刪除關聯數據,與之關聯也刪除on_delete=models.DO_NOTHING, # 刪除關聯數據,什么也不做on_delete=models.PROTECT, # 刪除關聯數據,引發錯誤ProtectedError# models.ForeignKey(’關聯表’, on_delete=models.SET_NULL, blank=True, null=True)on_delete=models.SET_NULL, # 刪除關聯數據,與之關聯的值設置為null(前提FK字段需要設置為可空,一對一同理)# models.ForeignKey(’關聯表’, on_delete=models.SET_DEFAULT, default=’默認值’)on_delete=models.SET_DEFAULT, # 刪除關聯數據,與之關聯的值設置為默認值(前提FK字段需要設置默認值,一對一同理)on_delete=models.SET, # 刪除關聯數據, a. 與之關聯的值設置為指定值,設置:models.SET(值) b. 與之關聯的值設置為可執行對象的返回值,設置:models.SET(可執行對象)

多對多(ManyToManyField)

class ManyToManyField(RelatedField): def __init__(self, to, related_name=None, related_query_name=None, limit_choices_to=None, symmetrical=None, through=None, through_fields=None, db_constraint=True, db_table=None, swappable=True, **kwargs): super().__init__(**kwargs)

因為多對多(ManyToManyField)沒有 on_delete 參數,所以略過不提.

二、on_delete外鍵刪除方式

CASCADE:級聯刪除。當Manufacturer對象刪除時,它對應的Car對象也會刪除。 PROTECT:保護模式,采用該選項,刪除時會拋出ProtectedError錯誤。 SET_NULL:置空模式,刪除的時候,外鍵字段被設置為空,前提就是blank=True, null=True,定義該字段的時候,允許為空。當Manufacturer對象刪除時,它對應的Car對象的manufacturer字段會置空,前提是null=True SET_DEFAULT:置默認值,刪除的時候,外鍵字段設置為默認值,所以定義外鍵的時候注意加上一個默認值。 SET():自定義一個值,該值當然只能是對應的實體了

django3.0關于models官方文檔地址:1.https://docs.djangoproject.com/en/3.0/topics/db/models/2.https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.ForeignKey

到此這篇關于Django數據模型中on_delete使用詳解的文章就介紹到這了,更多相關Django on_delete使用內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
主站蜘蛛池模板: 18免费视频| 亚洲精品一区二区三区四 | 成人欧美精品一区二区不卡 | 性做爰片免费视频毛片中文i | www亚洲视频 | 亚洲一区 中文字幕 久久 | 在线观看99| 日本一级特黄在线播放 | 免费在线成人 | 黄到让你下面湿的视频 | 特级黄色毛片在放 | 精品国产不卡一区二区三区 | 日韩亚洲综合精品国产 | 在线欧美日韩精品一区二区 | 性感美女视频黄.免费网站 性高湖久久久久久久久 | 久久一区二区三区99 | 欧美做暖小视频xo免费 | 欧美成人在线观看 | 日韩一区二区中文字幕 | 国产在播放一区 | 美女131爽爽爽做爰中文视频 | 97在线视频免费观看费观看 | 日韩欧美一区二区三区不卡在线 | 久久成人小视频 | 中国日本高清免费视频网 | 大片毛片女女女女女女女 | 国产在线播放免费 | 成人中文在线 | 成人在线观看午夜 | 久色网址 | 久久毛片视频 | 亚洲精品免费视频 | freex性日韩 free性chinese国语对白 | 欧洲亚洲综合一区二区三区 | 精品国产中文一级毛片在线看 | 国产一区二区三区久久精品小说 | 99热久久国产精品免费观看 | 欧美在线成人午夜影视 | 美女张开大腿让男人桶 | 欧美成人自拍 | 日本久久香蕉一本一道 |