我想要一种完成以下任务的Pythonic方法。 调用广告系列模型中的方法,该方法返回包含广告系列ID和当前登录用户ID的网址,即/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()
答案 0 :(得分:2)
而不是:
def get_referral_url(self):
简单定义:
def get_referral_url_for(self, user):
这看起来最简单,并且不会给出错误的印象,即user
有问题会以某种方式与Campaign
永久关联。