🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Hadi Khani
ایجاد BaseModel و ارث بری از آن
جامعه پایتون (وب) ایجاد شده در ۲۰ فروردین ۱۴۰۱

سلام وقت بخیر

ما برای هر مدل ترجیحا زمان ایجاد و زمان ویرایش رو اضافه می‌کنیم و این برای همه مدل‌ها تکرار میشه آیا بهتر نیست که یک کلاس با نام BaseModel بسازیم و این فیلد‌ها رو بهش اضافه کنیم و سایر مدل‌ها از اون ارث ببرن اینطوری حجم کد کمتر میشه

کلاس پدر

class ModelsBase(models.Model):
    create_time = models.DateTimeField(auto_now_add=True)
    modified_time = models.DateTimeField(auto_now=True)

کلاس فرزند:

class Transaction(ModelsBase):
    CHARGE = 1
    PURCHASE = 2
    TRANSFER = 3
    TRANSACTION_TYPE_CHOICES = (
        (CHARGE, 'Charge'),
        (PURCHASE, 'Purchase'),
        (TRANSFER, 'Transfer'),
    )
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='transaction')
    transaction_type = models.PositiveIntegerField(choices=TRANSACTION_TYPE_CHOICES, default=CHARGE)
    amount = models.BigIntegerField(null=False, blank=False)

کلاس فرزند:

class UserBalance(ModelsBase):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='balance')
    balance= models.BigIntegerField(null=False, blank=False)

درود

بله اینم یه راهکاره و به شخصه باهاتون موافقم :)

بهترین پاسخ
نازنین کریمی مقدم ۲۰ فروردین ۱۴۰۱، ۱۸:۲۷