رفع خطای FieldError: Unknown Field در جنگو
یکی از خطاهای رایجی که ممکن است هنگام توسعه وب با فریمورک جنگو (Django) با آن روبهرو شوید، خطای FieldError: Unknown Field است. این خطا معمولاً زمانی رخ میدهد که جنگو نتواند فیلدی که در یک مدل، فرم یا کوئری ارجاع داده شده است را پیدا کند. این آموزش به نحوه بررسی و رفع این خطا می پردازد.
1- بررسی نام فیلدها:
ابتدا اطمینان حاصل نمایید نام فیلدی که در کوئری یا فرم استفاده میکنید، دقیقاً با نام فیلد تعریفشده در مدل مطابقت دارد. جنگو به حروف کوچک و بزرگ حساس است، بنابراین حتی کوچکترین تفاوت باعث بروز خطا میشود.
2- بررسی تغییرات اخیر در مدلها:
اگر اخیراً تغییری در مدلها ایجاد کردهاید، مثلاً فیلدی را اضافه، حذف یا تغییر نام دادهاید، باید اطمینان حاصل کنید که migrations مربوطه را اجرا نموده اید. شما می توانید تغییرات مدل را با دستور زیر در Terminal اعمال کنید:
python manage.py makemigrations
python manage.py migrate
3- بررسی کوئریهای سفارشی:
اگر از کوئریهای سفارشی استفاده میکنید (مانند ()values(), annotate یا ()aggregate)، مطمئن شوید که نام فیلدهای ذکر شده در این کوئریها صحیح است.
4-بررسی فرمها:
اگر از فرمها استفاده میکنید، ممکن است خطا به دلیل استفاده از فیلدی غیرمعتبر در کلاس فرم رخ دهد. اطمینان حاصل کنید که تمام فیلدهایی که در fields مشخص کردهاید، در مدل تعریف شدهاند.
5-حذف کش قدیمی:
اگر از کش در پروژه استفاده میکنید، ممکن است کش قدیمی باعث بروز خطا شود. کش را پاک کنید تا مطمئن شوید دادهها بروز هستند:
python manage.py shell
from django.core.cache import cache
cache.clear()