使用getter和setter的Pythonic方法

2024-05-29 07:02:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一个Python的方式来完成以下任务。调用活动模型中的方法,该方法返回带有活动ID和当前登录用户ID的URL,即/campaign_id/user_id

为了实现这一点,我需要request.user范围,但我认为在我的模型中直接使用它不是一个好主意。我一直在读Python可以使用getter和setter,这会有用吗?所以我的想法是这样。。。你知道吗

campaign = Campaign.object.get(id=1)
campaign.set_current_user(request.user)

referral_url = campaign.get_referral_url()

which would give me /campaign_id/user_id/

这样好吗?你知道吗

到目前为止我的模型:

class Campaign(models.Model):
   name = models.CharField(max_length=120)

   @property
   def current_user(self):
       return self._current_user

   @current_user.setter
   def current_user(self, user_object):
      if user_object:
          return user_object.id
      else:
          return None


   def _build_referral_url(self):
        """
        Builds the full referral URL for the user.
        :return:
        """
        return self.name + "/" + self.current_user


    def get_referral_url(self):
        """
        :return: Campaign referral URL.
        """
        return self._build_referral_url()

Tags: 方法模型selfidurlgetreturnobject

热门问题