ایجاد مدل Model


#1

سلام خدمت دوستان یه مدل جنگو باید تهییه کنم کمی گیج شدم و نیاز به کمکتون دارم .

مدل اصلی User هست که شامل Credit , Coupon , Wallet هست فیلد هایی که لازمه رو مینویسم ممنون میشم نظرتونو بفرمایید .

سناریو از قبیله .

توی صفحه اول لیست کوپن ها و نوعشون لیست میشه و قسمتی داره که اگر یوزر رو از جنگو پنل ایجاد کرده باشیم بتونه داخل پروفایلش اعتبارش + تولید کد کوپن (در صورت داشتن اعتبار) و لیست کوپن ها و نوعشون مربوط به یوزر نمایش پیدا کنه .

class Credit(models.Model):
    type_choices = (
        ('gold', 'Gold'),
        ('silver', 'Silver'),
        ('bronze', 'Bronze')
    )
    amount = models.PositiveIntegerField()
    type = models.CharField(max_length=6, choices=type_choices, default='bronze')

    def __str__(self):
        return '{}'.format(self.type)


class Coupon(models.Model):
    number = models.PositiveIntegerField(max_length=7, unique=True)
    type_of_coupon = models.CharField(max_length=6)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return '{} {} {}'.format(self.number, self.type_of_coupon, self.created)


class Wallet(models.Model):
    user_id = models.PositiveIntegerField()
    credit = models.ForeignKey(Credit, related_name='credit', on_delete=models.CASCADE)
    coupon = models.ForeignKey(Coupon, related_name='coupon', on_delete=models.CASCADE)

    def __str__(self):
        return '{} {} {}'.format(self.user_id, self.credit, self.coupon)

نیاز یه فکر میکنم یه مدل به اسم USER داشته باشم و به نوعی با کلاس مدل های دیگه ارتباطش بدم .

کاملا این حسسو دارم که غلطه این کاری که انجام دادم ممنون میشم راهنمایی بفرمایید .


#2

نیاز به فکر میکنم یه مدل به اسم USER داشته باشم و به نوعی با کلاس مدل های دیگه ارتباطش بدم .

بنظر میاد که باید همین کارو انجام بدی، فقط اگر یک دایگرام هم میدادی بد نبود اما در کل طراحی در مسیر درستیه.

۱- هر یوزر چند wallet و چند coupon میتونه داشته باشه و رابطه به چه صورت هست؟
۲- Credit بجز برای درست کردن coupon برای چه مورد دیگه ای استفاده میشه؟
۳- سیستم از کجا تشخیص میده که یوزر با داشتن یک Credit خاص میتونه چه کارهای مشخصی رو انجام بده؟ [معنی Credit در دنیای واقعی چطور برای سیستم تعریف شده؟]
۴- کاربرد Coupon و Wallet هر کدام در سیستم چیه و برای بیزینس چه معنی دارند؟
۵- آیا منظور از Credit همون Account Type هست یا Access Level یا چیز دیگه؟

Tip— در سیستم های حسابداری و غیره Credit و Debit معنی کاملا مشخصی دارند که بیشتر برای محاسبه بدهی و طلب یک حساب بکار میروند، پس بهتره در نام گذاری هم انتخاب با دقت انجام بگیره.