当前位置: 代码迷 >> python >> 模型Arcitecture流程与钱包推荐和WalletLog
  详细解决方案

模型Arcitecture流程与钱包推荐和WalletLog

热度:65   发布时间:2023-06-16 10:23:51.0

任务是: 我如何将所有三个模型链接为我的要求

要求:如果用户转介某人(other User)他将在他的wallet (Referral Based)获得一些amount wallet (Referral Based) 一个user refer许多user

正如我上面提到的要求标准......请充分满足需求

我必须创建下面提到的三个模型,这些模型与User模型相关联。

1. Wallet
2. Wallet_Log
3. Referral

查看Created需要建议的模型..

class Wallet(models.Model):
    owner = models.OneToOneField(user, related_name='wallet', unique=True)
    amount = models.FloatField(default=0.0)
    datetime = models.DateTimeField(auto_now_add=True,null=True)
    walletID = models.CharField(max_length=10, default="00000")
    ack = models.BooleanField(default=False)

    def __unicode__(self):
            return u'%s' % self.owner

    @property
    def set_ack(self):
        return self.ack

    @set_ack.setter
    def set_ack(self, bol):
        self.ack = bol

class WalletLog(models.Model):
    wallet = models.ForeignKey(Wallet)
    user_from = models.ForeignKey(user, null=True, blank=True)
    amount = models.FloatField()   
    datetime = models.DateTimeField(auto_now_add=True, null=True)
    report = models.CharField(max_length=100)  


    def get_wallet_log(self):
        if(self.wallet):
            return "%s"%(self.wallet.amount)
        else:
            return "Not Available"

    def get_user_from_log(self):
        if(self.user_from):
            return "%s"%(self.user_from.user_first_name)
        else:
            return "Not Available"

    def __unicode__(self):
            return u'%s' % self.wallet


class OrderReferral(models.Model):

    referrer = models.ForeignKey(user, related_name='referrer')
    referred = models.ForeignKey(user, related_name='referred')
    wallet = models.ForeignKey(Wallet, related_name='order_referred')
    created_date = models.DateTimeField()
    updated_date = models.DateTimeField()
    order_active = models.BooleanField()

    def __unicode__(self):
        return '%s %s made a referral' % (self.referrer.first_name, self.referrer.last_name)


    class Meta:
        verbose_name_plural = "Order Referral"

是最后以正确的方式设置model relationship ,以通过编写test casecode来避免不必要的join query

  相关解决方案