تغییر توی دیتابیس برای زدن query بهینه تر تو ORM جنگو

توی یه مدل جنگو میخاستم یه JSON ذخیره کنم، طبیعتا رفتم تو کار استفاده از JSONField. تعریف مدل اینجوری شد:

توی یه view میخاستم kwargs ای که به view پاس داده شده رو توی این فیلد ذخیره کنم بنابراین با ORM زیر اون رو آپدیت میکردم:

دیتایی که توی این فیلد ذخیره میشه حالات مختلفی داره مثل

نکته اینجاست که من میخام یه جاهای query بزنم و اون آبجکتهایی رو داشته باشم که این فلدشون پارامتر doc_id رو توش داره (همشون ندارن) و مجبور از روش زیر query بزنم:

مشکل این چیه؟ اینکه بهینه نیست باید راه حلی باشه که با یه query جواب رو بگیرم. در واقع یک ORM جنگو یکجا به SQL تبدیل بشه و یک هیت دیتابیس داشته باشه. فهمیدم که با تغییر زیر میتونم این کار رو بکنم

اول اینکه باید JSONField رو هست بگم که دیفالتش دیکشنری باشه

و حالا دیگه از json.dumps برای وارد کردن دیتا استفاده نمیکنیم:

و حالا دیتایی که توی دیتابیس ذخیره میشه این فیلدش دیکشنریه و میتونیم با یه query دیتایی که میخاستیم رو بگیریم:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *