ماجرا اینه که زمانی که شما objects.get میزنید درحقیقت دارید همچین کوئری میسازید:
SELECT * FROM MyModel WHERE id=1
و بعد وقتی پشت سرش .delete() میزنید اتفاقی که میوفته اول کوئری select رو میزنه دیتا رو میگیره و بعد دوباره کوئری delete رو میزنه.
تو حالت دوم که از filter استفاده میکنید دیگه یک راست میاد کوئری دلیت رو میزنه و دیگه گت نمیکنه در نتیجه اگر دیتا وجود هم نداشته باشه اروری نمیخورید چون خوب اصلا نگرفتیدش که ارور بخورید. در نهایت اگه تمام کارتون از یک دیتا اینه که حذفش کنید با filter.delete بزنید خیلی بهتره.
@TorhamDevCH