From 31f341d1f493fdcf864dfc08e13bb0b0e50d7424 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Thu, 13 Aug 2026 18:19:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(migrations):=200028=20=E5=9B=9E=E5=A1=AB?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E8=BF=81=E7=A7=BB=E7=8A=B6=E6=80=81=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=90=8D=EF=BC=88=E5=B0=8F=E5=86=99=EF=BC=89=E5=B9=B6?= =?UTF-8?q?=E8=A1=A5=20Menu.TenantUUID=EF=BC=8Cmigrate=20=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 0028 回填 Company/关联表历史字段名(tenant_uuid/company_uuid)匹配既有迁移状态 - gerp Menu 补 TenantUUID 字段(与已执行 DB 列对齐) - migrate 完成:0028 回填 54 行(fake 标记,AddField 已由 MySQL DDL 提交)、0029 FK→UUIDField、token_blacklist 建表 --- .../gerp/migrations/0028_tenant_uuid_backfill.py | 12 ++++++++---- gvsds/apps/gerp/models.py | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gvsds/apps/gerp/migrations/0028_tenant_uuid_backfill.py b/gvsds/apps/gerp/migrations/0028_tenant_uuid_backfill.py index 9d16ec7c..de4cfb17 100644 --- a/gvsds/apps/gerp/migrations/0028_tenant_uuid_backfill.py +++ b/gvsds/apps/gerp/migrations/0028_tenant_uuid_backfill.py @@ -16,15 +16,19 @@ _BACKFILL_TABLES = ( def backfill_tenant_uuid(apps, schema_editor): - """从关联 Company 的 TenantUUID 回填各表 TenantUUID""" + """从关联 Company 的 TenantUUID 回填各表 TenantUUID + + 注意:历史模型字段名沿用迁移状态中的小写形式(tenant_uuid/company_uuid), + 与 0001 等既有迁移保持一致(当前 models.py 的 PascalCase 属性名不在历史模型中)。 + """ Company = apps.get_model('gerp', 'Company') company_tenant = dict( - Company.objects.exclude(TenantUUID__isnull=True).values_list('CompanyUUID', 'TenantUUID') + Company.objects.exclude(tenant_uuid__isnull=True).values_list('company_uuid', 'tenant_uuid') ) for name in _BACKFILL_TABLES: model = apps.get_model('gerp', name) - for obj in model.objects.exclude(CompanyUUID__isnull=True).only('pk', 'CompanyUUID').iterator(): - tenant = company_tenant.get(obj.CompanyUUID_id) + for obj in model.objects.exclude(company_uuid__isnull=True).only('pk', 'company_uuid').iterator(): + tenant = company_tenant.get(obj.company_uuid_id) if tenant: model.objects.filter(pk=obj.pk).update(TenantUUID=tenant) diff --git a/gvsds/apps/gerp/models.py b/gvsds/apps/gerp/models.py index af3b4093..76a568f7 100644 --- a/gvsds/apps/gerp/models.py +++ b/gvsds/apps/gerp/models.py @@ -255,6 +255,7 @@ class Menu(QModel): """菜单表——系统导航与功能入口""" MenuUUID = UUIDField(primary_key=True, verbose_name='菜单UUID') + TenantUUID = UUIDField(null=True, blank=True, verbose_name='租户UUID') CompanyUUID = UUIDField(null=True, blank=True, db_column='CompanyUUID', verbose_name='公司UUID') ParentMenuUUID = UUIDField(null=True, blank=True, db_column='ParentMenuUUID', verbose_name='上级菜单UUID') MenuName = models.CharField(max_length=128, verbose_name='菜单名称')