برای آشنایی با قالب صورت سوال در Quera اینجا را مشاهده کنید و برای آشنایی با نحوه‌ی داوری پایتون و جنگو، اینجا را ببینید. برای کسب اطلاعات بیشتر درباره نحوه برگزاری مسابقه و پخش جوایز هم اینجا را ببینید.

دو سوال اول مسابقه مربوط به پایتون و دو سوال بعدی مسابقه مربوط به جنگو هستند. سوال آخر هم تاثیری در رتبه‌بندی و پخش جوایز ندارد اما حل آن برای حضور در مصاحبه حضوری شرکت تومن توصیه می‌شود.

مدل‌بازی


  • این سوال سیستم داوری ندارد و پس از مسابقه توسط تیم شرکت «تومن» بررسی می‌شود.
  • برای استخدام در این شرکت بسیار توصیه می‌شود این سوال را حل کنید، اما تاثیری روی رتبه‌ی شما و جایزه‌ی مسابقه ندارد.

در این سوال توانایی مدل‌سازی شما سنجیده می‌شود. در پروژه‌ی زیر مدل‌سازی یک سامانه پرداخت آنلاین را می‌بینید.

from django.db import models


class User(models.Model):
    username = models.CharField(max_length=100, unique=True)
    balance = models.PositiveIntegerField(default=0)


class Merchant(models.Model):
    balance = models.IntegerField(default=0)


class Transaction(models.Model):
    TYPE_CHOICES = (
        (1, 'shopping'),
        (2, 'subscription'),
        (3, 'rent'),
        (4, 'bill'),
        (5, 'loan'),
        (6, 'donation')
    )
    type = models.IntegerField(db_index=True, choices=TYPE_CHOICES)
    payer = models.ForeignKey('User', related_name='payments', on_delete=models.PROTECT)
    payee = models.ForeignKey('Merchant', related_name='receipts', on_delete=models.PROTECT)
    amount = models.PositiveIntegerField()
Python

لینک دانلود فایل کد

در سامانه‌ی توصیف شده تعدادی کاربر خریدار و تعدادی فروشنده وجود دارد، و تعدادی تراکنش که بین یک فروشنده و یک خریدار صورت می‌گیرد. اولین کاری که باید بکنید این است که با مشاهده‌ی مدل، اهداف بخش‌های آن را خودتان متوجه شوید!

حال ما می‌خواهیم قابلیت امکان تخفیف را به نوع bill از تراکنش در سامانه اضافه کنیم. یعنی تنها تراکنش‌هایی که از نوع bill هستند قرار است بتوانند تخفیف داشته باشند، و در نهایت قرار است این امکان کاملا پیاده‌سازی شود و در سامانه استفاده شود.

شما باید مدل‌های سامانه‌ی جدید را طراحی کنید. برای این طراحی برای هر تغییری کاملا آزاد هستید؛ شما می‌توانید مدل‌های فعلی را تغییر دهید و هم‌چنین شما می‌توانید هر چند مدلی که خواستید به آن اضافه کنید.

در کنار تغییراتی که می‌دهید، در صورت نیاز، توضیحی راجع به دلیل آن نیز بنویسید. این توضیحات را هم در کنار کدتان ارسال کنید. می‌توانید این توضیحات را در کد بصورت کامنت بنویسید، و یا در فایلی جداگانه قرار دهید.

در نهایت یک فایل zip که شامل موارد گفته شده است برای این سوال ارسال کنید. برای ساختار فایل zip ارسالی و موارد داخل آن نیز محدودیتی ندارید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.