当前位置:网站首页>ORM model -- associated fields, abstract model classes
ORM model -- associated fields, abstract model classes
2022-07-07 10:07:00 【chuntian_ tester】
1. Correlation field
The relationship between tables is divided into :
One to one relationship : Such as the relationship between student table and student details table , A student in the student information form
There is only one corresponding relationship record in
One-to-many relation : Such as projects Table and interfaces The relationship between tables , An item in the item list , In the interface table
There may be multiple interfaces in this project
Many to many relationship : Such as the relationship between student schedule and curriculum , A student in the student list may take more than one course in the curriculum
Course , A course in the curriculum , It may also be selected by multiple students in the student list
1.1 establish interfaces Subapplication , And define Interfaces Model class
1.1.1 Project root execute command :python manage.py startapp interfaces
1.1.2 take interfaces Subapplication is registered to setting.py Medium INSTALLED_APPS in
1.1.2 interfaces/models.py Define model classes in Interfaces:
from django.db import models
class Interfaces(models.Model):
"""
1. If you create a one to many relationship , So you need to ' many ' Defined in the model class of models.ForeignKey() Foreign key field
1.1 models.ForeignKey() The first parameter is a required parameter , Specify the parent table model class that needs to be associated : Subapplication name . Model class name ,models.ForeignKey("projects.Projects")
1.2 You can also directly import the parent model class into this file , Use the parent table model class name directly :models.ForeignKey(Projects)
1.3 In foreign keys on_delete Parameters :
1.3.1 models.CASCADE: When the main table record is deleted , Delete from the table record
1.3.2 models.SET_NULL: When the main table record is deleted , Automatically set from table records to null
1.3.3 models.SET_DEFAULT: When the main table record is deleted , Automatically set from table records to default , Additional designation is required default=True
1.3.4 models.PROTECT: When the main table record is deleted , If there is corresponding slave table data , Will throw an exception
2. If you create a one-to-one relationship , It can be defined in any model class models.OneToOneField()
3. If you create many to many relationships , It can be defined in any model class mmodels.ManyToManyField()
"""
id = models.AutoField(primary_key=True, verbose_name='id Primary key ', help_text='id Primary key ')
name = models.CharField(verbose_name=' The name of the interface ', help_text=' The name of the interface ', max_length=50)
tester = models.CharField(verbose_name=' Testers ', help_text=' Testers ', max_length=30)
create_time = models.DateTimeField(auto_now_add=True, verbose_name=' Creation time ', help_text=' Creation time ')
update_time = models.DateTimeField(auto_now=True, verbose_name=' Update time ', help_text=' Update time ')
# Set up foreign keys
projects = models.ForeignKey('projects.Projects', on_delete=models.CASCADE,
verbose_name=' Project ', help_text=' Project ')
class Meta:
db_table = ' Interface table '
verbose_name = ' Interface table '
# Plural form
verbose_name_plural = ' Interface table '
# ordering Define the fields to sort
ordering = ['id']
1. If you create a one to many relationship , So you need to ' many ' Defined in the model class of models.ForeignKey() Foreign key field 1.1 models.ForeignKey() The first parameter is a required parameter , Specify the parent table model class that needs to be associated : Subapplication name . Model class name ,models.ForeignKey("projects.Projects") 1.2 You can also directly import the parent model class into this file , Use the parent table model class name directly :models.ForeignKey(Projects) 1.3 In foreign keys on_delete Parameters : 1.3.1 models.CASCADE: When the main table record is deleted , Delete from the table record 1.3.2 models.SET_NULL: When the main table record is deleted , Automatically set from table records to null 1.3.3 models.SET_DEFAULT: When the main table record is deleted , Automatically set from table records to default , Additional designation is required default=True 1.3.4 models.PROTECT: When the main table record is deleted , If there is corresponding slave table data , Will throw an exception 2. If you create a one-to-one relationship , It can be defined in any model class models.OneToOneField() 3. If you create many to many relationships , It can be defined in any model class mmodels.ManyToManyField()
1.2 Perform the migration
2. Abstract model class
above Interfaces The model class defines create_time and update_time, Parent table Projects These two fields are also defined , So we can create utils Catalog , Define some public model classes in it BaseModel, Similar toolbox , In this way, you can directly import and reference public model classes in different sub applications
2.1 establish utils Catalog
2.2 Define common model classes BaseModel
2.2.1 take BaseModel Defined as abstract class , tell ORM frame , This class is only used to be inherited , Do not
Create the corresponding table with :abstract= True
2.3 Reference inheritance in subapplication BaseModel
2.3 Interfaces Subapplication inheritance BaseModel The public model class is simplified as follows :
from django.db import models
from utils.base_model import BaseModel
# class Interfaces(models.Model):
class Interfaces(BaseModel):
"""
1. If you create a one to many relationship , So you need to ' many ' Defined in the model class of models.ForeignKey() Foreign key field
1.1 models.ForeignKey() The first parameter is a required parameter , Specify the parent table model class that needs to be associated : Subapplication name . Model class name ,models.ForeignKey("projects.Projects")
1.2 You can also directly import the parent model class into this file , Use the parent table model class name directly :models.ForeignKey(Projects)
1.3 In foreign keys on_delete Parameters :
1.3.1 models.CASCADE: When the main table record is deleted , Delete from the table record
1.3.2 models.SET_NULL: When the main table record is deleted , Automatically set from table records to null
1.3.3 models.SET_DEFAULT: When the main table record is deleted , Automatically set from table records to default , Additional designation is required default=True
1.3.4 models.PROTECT: When the main table record is deleted , If there is corresponding slave table data , Will throw an exception
2. If you create a one-to-one relationship , It can be defined in any model class models.OneToOneField()
3. If you create many to many relationships , It can be defined in any model class mmodels.ManyToManyField()
"""
name = models.CharField(verbose_name=' The name of the interface ', help_text=' The name of the interface ', max_length=50)
tester = models.CharField(verbose_name=' Testers ', help_text=' Testers ', max_length=30)
# Set up foreign keys
projects = models.ForeignKey('projects.Projects', on_delete=models.CASCADE,
verbose_name=' Project ', help_text=' Project ')
class Meta:
db_table = ' Interface table '
verbose_name = ' Interface table '
# Plural form
verbose_name_plural = ' Interface table '
# ordering Define the fields to sort
ordering = ['id']
2.4 Execute migration script
python manage.py makemigrations projects interfaces
python manage.py migrate interfaces
python manage.py migrate projects
边栏推荐
- Do you have a boss to help look at this error report and what troubleshooting ideas are there? Oracle CDC 2.2.1 flick 1.14.4
- 请教个问题,我用sql-client起了个同步任务,从MySQL同步到ADB,历史数据有正常同步过去
- Before joining the chain home, I made a competitive product analysis for myself
- There is a problem using Chinese characters in SQL. Who has encountered it? Such as value & lt; & gt;` None`
- Bean operation domain and life cycle
- 大佬们,请问 MySQL-CDC 有什么办法将 upsert 消息转换为 append only 消
- Enterprise practice | construction of banking operation and maintenance index system under complex business relations
- The Himalaya web version will pop up after each pause. It is recommended to download the client solution
- Detailed explanation of diffusion model
- AI从感知走向智能认知
猜你喜欢
Basic use of JMeter to proficiency (I) creation and testing of the first task thread from installation
Qualifying 3
反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释
Applet popup half angle mask layer
The applet realizes multi-level page switching back and forth, and supports sliding and clicking operations
Wallys/IPQ6010 (IPQ6018 FAMILY) EMBEDDED BOARD WITH ON-BOARD WIFI DUAL BAND DUAL CONCURRENT
request对象对请求体,请求头参数的解析
Flex flexible layout
一大波开源小抄来袭
China's first electronic audio category "Yamano electronic audio" digital collection is on sale!
随机推荐
反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释
使用BigDecimal的坑
2020ccpc Weihai J - Steins; Game (SG function, linear basis)
AI从感知走向智能认知
Internship log - day04
Scratch crawler mysql, Django, etc
2020浙江省赛
2016 CCPC Hangzhou Onsite
Finally, there is no need to change a line of code! Shardingsphere native driver comes out
ORM模型--关联字段,抽象模型类
C# Socke 服务器,客户端,UDP
【无标题】
There is a problem using Chinese characters in SQL. Who has encountered it? Such as value & lt; & gt;` None`
14th test
conda离线创建虚拟环境
有没有大佬帮忙看看这个报错,有啥排查思路,oracle cdc 2.2.1 flink 1.14.4
Memory ==c language 1
flink. CDC sqlserver. You can write the DEM without connector in sqlserver again
CDZSC_2022寒假个人训练赛21级(2)
喜马拉雅网页版每次暂停后弹窗推荐下载客户端解决办法