モデルを作成します。
- 定期的にモデルを作成する
-
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, } }
-
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'
-
-
既存のデータベース構造を Django のモデルに変換する
-
python .\manage.py Inspectiondb > my_modela_app/models.py 自動生成されたモデルは実際のモデルと異なる場合がありますが、最初の移行時に解決されるため問題ありません。
-
python .\manage.py makemigrations は移行ファイルを生成します
-
python .\manage.py merge --fake これは転送されたモデルであるため、通常の移行では間違いなくエラーが報告されます。django がこれが既存のデータベースの結果であると考えることを願っています。そのため、最初の移行には --fake を追加します (データベースは今回は移行を無視します)
-
以降の動作は通常の動作モデルまたはプロセスと同じです
-
移行中に install_app に django_comment_merge を登録すると、モデル内のフィールド コメントを mysql テーブルに配置するのに役立ちます。
-