一:ジャンゴモデル

モデルを作成します。

  1. 定期的にモデルを作成する
    1. settings.py ファイルでデータベース情報を構成します。

      # Database
      # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
      
      DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.mysql',
              'HOST': MYSQL_ADDRESS_PRO,
              'PORT': '3306',
              'NAME': 'db_name',
              'USER': MYSQL_ACCOUND_PRO,
              'PASSWORD': MYSQL_PASS_PRO,
          }
      }
    2. django-app の models.py ファイルに新しいモデルを作成します。

      from django.db import models
      
      
      class ZkysBaseModel(models.Model):
          # 所有model都有的字段,基类
          is_delete = models.BooleanField(default=False, db_index=True)
          c_time = models.DateTimeField(auto_now_add=True)
          u_time = models.DateTimeField(auto_now=True)
      
          # 类中在定义一个类就代表是配置,约定俗成都叫Meta
          class Meta:
              # 基表必须设置abstract,基表就是给普通Model类继承使用的,设置了abstract就不会完成数据库迁移完成建表
              abstract = True
      
      
      class NotDeletedManager(models.Manager):
          """
          @description  :重写模型管理器的getqueryset方法,这样get请求就自动过滤掉is_delete为True
                         的字段了,sure,你可以可以定义你自己的规则。
          ---------
          @param  :
          -------
          @Returns  :
          -------
          """
          def get_queryset(self):
              return models.Manager.get_queryset(self).filter(is_delete=False)
      
      
      class BladeNumberTableModel(ZkysBaseModel):
          task_id = models.CharField(unique=True, max_length=50, blank=True, null=True)
          blade_one = models.CharField(max_length=255, default="", help_text='')
          blade_two = models.CharField(max_length=255, default="", help_text='')
          blade_three = models.CharField(max_length=255, default="", help_text='')
          # 添加逻辑外键,不改变mysql的表结构,但是可以用orm关联查询,db_constraint=False就是实现了这个功能
          fault_type_code = models.ForeignKey(to='FaultTypeManage', to_field='fault_type_code', on_delete=models.SET_NULL, db_constraint=False, null=True, blank=True, db_column="fault_type_code")
          objects = NotDeletedManager()
      
          class Meta:
              managed = True
              db_table = 'blade_number_table'
  2. 既存のデータベース構造を Django のモデルに変換する

    1. python .\manage.py Inspectiondb > my_modela_app/models.py 自動生成されたモデルは実際のモデルと異なる場合がありますが、最初の移行時に解決されるため問題ありません。

    2. python .\manage.py makemigrations は移行ファイルを生成します

    3. python .\manage.py merge --fake これは転送されたモデルであるため、通常の移行では間違いなくエラーが報告されます。django がこれが既存のデータベースの結果であると考えることを願っています。そのため、最初の移行には --fake を追加します (データベースは今回は移行を無視します)

    4. 以降の動作は通常の動作モデルまたはプロセスと同じです

    5. 移行中に install_app に django_comment_merge を登録すると、モデル内のフィールド コメントを mysql テーブルに配置するのに役立ちます。

おすすめ

転載: blog.csdn.net/xiaofeixia666888/article/details/127053313