From 9d8c1bb317ee6d7f54e96ad9cdeafdac10d569ac Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Fri, 2 Jun 2023 10:56:00 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E8=B4=A6=E5=8F=B7=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6,=20=E4=BC=98=E5=8C=96=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=9B=B4=E6=96=B0=E8=B4=A6=E5=8F=B7=E9=80=BB=E8=BE=91?= =?UTF-8?q?=20(#10611)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: feng <1304903146@qq.com> --- apps/accounts/serializers/account/template.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/accounts/serializers/account/template.py b/apps/accounts/serializers/account/template.py index d2d992ea6..ffe8c7564 100644 --- a/apps/accounts/serializers/account/template.py +++ b/apps/accounts/serializers/account/template.py @@ -23,8 +23,12 @@ class AccountTemplateSerializer(BaseAccountSerializer): def sync_accounts_secret(self, instance, diff): if not self._is_sync_account or 'secret' not in diff: return - - accounts = Account.objects.filter(source_id=instance.id) + query_data = { + 'source_id': instance.id, + 'username': instance.username, + 'secret_type': instance.secret_type + } + accounts = Account.objects.filter(**query_data) instance.bulk_sync_account_secret(accounts, self.context['request'].user.id) def validate(self, attrs): @@ -38,7 +42,10 @@ class AccountTemplateSerializer(BaseAccountSerializer): if getattr(instance, k, None) != v } instance = super().update(instance, validated_data) - self.sync_accounts_secret(instance, diff) + if {'username', 'secret_type'} & set(diff.keys()): + Account.objects.filter(source_id=instance.id).update(source_id=None) + else: + self.sync_accounts_secret(instance, diff) return instance