سلام استاد یه سوال دیگه چجوری میشه ای دی سفارش رو order detail بدست اورد؟
سلام وقت بخیر
order_detail به order فارنکی داره و بهش دسترسی داره :
order_detail.order.id
اوکی ممنون
این خطارو میده
از ویو تون عکس بفرستید
عکس ویو لطفا اگر میدونید بگید ممنون
سلام وقت بخیر
این OrderDetail که نوشتید خود مدل اصلی هستش شما باید یک نمونه ای ازش رو در نظر بگیرید و در اون صورت اگر بنویسید :
order_detail.order.id
ایدی سفارش رو به شما میده
ولی خب با این ایدی میخواید چیکار کنید ؟
اگر دقیق تر بگید میخواید چه کاری انجام بدید بهتر میتونم راهنماییتون کنم
اصلا order نداره
میخوام بررسی کنم که ایا این کالا در سبد خرید موجود هست یا نه اگر موجود بود به جای دکمه انتقال به سبد خرید بنویسه موجود در سبد خرید شما
دلیلی که order نداره اینه که وقتی شما مینویسید
order_detail = OrderDetail.objects.all()
میاد لیستی از همه order detail ها برمی گردونه ما وقتی یدونه object داریم به order دسترسی داره یعنی :
for detail in order_detail:
detail.order.id
حالا با این کاری نداریم برای کاری که میخواید انجام بدید این مورد لازم نیست
باید اول سبد خرید باز کاربر رو پیدا کنید من نامگذاری فیلدهای پروژه رو واقعا یادم نیست و به پروژه هم دسترسی ندارم الان که ببینم برای همین نام هایی میزارم که مشخص باشه به چی اشاره میکنن شما فیلد مورد نظر رو بزارید :
order = Order.objects.filter(
isPaid = False,
user_id = request.user.id,
...
).first()
حالا میایم میبینیم محصول ما در این سبد خرید هست یا نه
isExistsProductinOrder = order.orderdetail_set.filter(
product_id = product.id
).exists()
این بین ممکنه order مقدارش None باشه و یا کاربر لاگین نباشه که ارور هایی رو دریافت میکنید با if اون هارو کنترل کنید
حالا این متغیر رو دارید isExistsProductinOrder که به شما میگه محصول این صفحه توی سبد خرید هست یا نه و میتونید کاری که لازمه رو باهاش انجام بدید
خیلی ممنون
استاد objects رو نمیاره خودمم مینویسم attributeerror میده میگه objects موجود نیست
objects رو ننویسید اشتباه نوشتم اونجا objects نداره تصحیحش کردم
isExistsProductinOrder = order.orderdetail_set.filter(
product_id = product.id
).exists()
خیلی ممنون که توجه کردید درست شد