当前位置:网站首页>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 

 

原网站

版权声明
本文为[chuntian_ tester]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207070717235593.html