همه چی از uber شروع شد. ایده ی خوبی که رانندگان را به مسافران وصل میکرد و هر کسی هر جایی بود به سرعت میتوانست برای خودش تاکسی درخواست دهد. مدتی نگذشت که برنامهنویس های داخل کشور عزیزمان هم از این سرویس ایده گرفتند و شروع به پیاده سازی مشابه آن در ایران کردند. در حال حاضر چندین سرویس درخواست آنلاین تاکسی وجود دارد که در تهران و چند شهر دیگر مشغول سرویس دهی به مسافرین هستند و روز به روز هم گسترش بیشتری میابند و اشتغالزایی زیادی را نیز به وجود آوردهاند. حالا با توجه به بازار داغ این سرویس ما نیز میخواهیم یک سرویس مشابه ایجاد کنیم. اسمش هم cabin
گذاشتهایم.
شما میتوانید پروژه کابین را از اینجا دانلود کنید.
همانطور که در فایل ها میبینید یک app به نام cabin وجو دارد. در فایل models.py هشت مدل به شرح زیر وجود دارد:
مدل Account: اکانت که به یک مدل دیگر اعم از راننده یا مسافر یا مدیر سیستم وصل است و شامل فیلد های زیر است
مدل Admin: مدیر سیستم که دسترسی هایی خاصی به سیستم دارد
مدل Rider: مسافر
مدل Driver: راننده
مدل Car: خودرو
مدل RideRequest: درخواست سفر
مدل Ride: سفر
مدل Payment: پرداخت
حال از شما میخواهیم پرس و جو (query) های زیر را روی مدل های بالا بنویسید.
حتما قبل شروع نوشتن کد، تذکرات انتهای سوال را بخوانید!
n
که نشان دهنده ی تعداد سفر هایی است که در آنها نام خانوادگی راننده با نام خانوادگی مسافر یکسان بوده است.🔗n
که تعداد سفر هاییست که در آن سفر ها ماشین مدل x یا به بالا (توجه کنید که مدل با نوع متفاوت است!) بوده است و طول سفر بیشتر از t ثانیه بوده است.🔗خروجی نمونه:
extra
از نوع عدد صحیح که مقدار این ستون با توجه به نوع ماشین (car_type
) به شرح زیر تعریف میشود.🔗A
بود تعداد سفر های انجام شده با آن ماشین در ستون extra قرار میگیرد.B
بود مجموع طول سفر های انجام شده با آن ماشین در ستون extra قرار میگیرد.C
بود مجموع مبلغ سفر های انجام شده با آن ماشین در ستون extra قرار میگیرد.در فایل های اولیه ای که دانلود کردید یک سری داده اولیه به عنوان نمونه قرار داده شده است. همچنین ۵ تست نمونه برای ۵ پرسوجو اول بر اساس داده های اولیه قرار داده شده است که میتوانید قبل از فرستادن سوال در سایت، این تست ها را ببینید تا با نحوه داوری ما آشنا شوید و از پاسخ خود اطمینان حاصل نمایید.
تست ها را میتوانید با دستور زیر اجرا کنید:
یک فایل به نام queries.py
وجود دارد که برای هر سوال یک تابع در نظر گرفته شده است. شما کد های خود را باید در این فایل بنویسید و QuerySet مربوطه را بازگردانید.
برای نمونه تابع query_0
در پاسخ به پرس و جویِ «لیست همه ی رانندگانی که رتبهی آنها بیشتر از x است.» کامل شده است که شما نیز باید مشابه همین تابع بقیه توابع را کامل کنید.
در سوالاتی که در صورت سوال مقداری به صورت متغییر ذکر شده است(مانند x در مثال بالا)، متغییر مورد نظر در آرگومان های ورودی تابع در نظر گرفته شده است. شما خود نباید آرگومان های ورودی تابع را تغییر دهید.
در تمام سوالات به جز سوالاتی که خروجی نمونه برای آنها مشخص شده است، همان طور که ذکر شد، خروجی شما یک شیء از نوع QuerySet با المان هایی از جنس گفته شده در اول سوال باید باشد. یعنی در واقع خود query را return کنید.
برای مثال اگر سوال گفته باشد «لیست ماشین هایی که....» خروجی شما به شکل زیر باید باشد:
در سوالات دیگر نیز که خروجی مشخص شده است، باز نتیجه یک QuerySet است ولی شامل همه فیلد های مدل مورد نظر نمیشود و فقط فیلد های خواسته شده با نام خواسته شده باید در آن قرار داشته باشد.
در هیچ کدام از پرس و جوی های خواسته شده ترتیب مهم نیست.
پس از نوشتن کد، کل پروژه را zip کرده و ارسال کنید. توجه کنید که هر کدی که خارج از فایل queries.py
باشد، در هنگام داوری حذف خواهند شد.