我使用信號做了它,我不知道它是否是正確的方式,如果沒有,請告訴我。
@receiver(
post_delete,
sender=ClientPhone,
dispatch_uid="keep_one_client_phone_as_deafult"
)
def keep_one_default_phone_after_delete(sender, instance, **kwargs):
phones = sender.objects.filter(client_id=instance.client_id)
if len(phones) == 0:
return
elif len(phones) == 1:
if not phones[0].default:
phones[0].default = True
phones[0].save()
return
else:
if instance.default:
sender.objects.get(client_id=instance.client_id).update(default=True)
@receiver(
post_save,
sender=ClientEmail,
dispatch_uid="keep_one_client_email_as_deafult"
)
def keep_one_default_email(sender, instance, **kwargs):
emails = sender.objects.filter(client_id=instance.client_id)
if len(emails) == 0:
return
elif len(emails) == 1:
if not emails[0].default:
emails[0].default = True
emails[0].save()
return
else:
if instance.default:
sender.objects.filter(
~Q(id=instance.id),
client_id=instance.client_id
).update(default=False)
else:
emails[0].default = True
emails[0].save()
在這樣的Django中使用信號是好的方法嗎?或者我應該擴展模型的默認保存和編輯功能?
你能否增加額外的信息,因爲它不清楚你的目標是什麼? –
我希望將一封電子郵件始終設置爲默認電子郵件地址,即使當我刪除當前標記爲deafult的電子郵件地址我想讓其他電子郵件地址成爲默認電子郵件地址 – Blejwi
當您刪除當前默認電子郵件地址時,如何確定哪個電子郵件地址成爲默認電子郵件地址? – Anentropic