我想创建一个模型方法,它将使用“user”(它是一个CharField) 给定的评论然后返回与该用户相关联的“引用”,该用户被定义为部分 UserProfile。我正在尝试创建方法和模板。到目前为止我尝试过的东西似乎没有用。
我知道最好的方法是将“用户”字段放入其中 回顾一个ForeignKey给用户,但我想知道如何用一个 方法所以我可以学习。
class Reviewbackup(models.Model):
review = models.CharField('Review', max_length = 2000)
user = models.CharField('Username', max_length = 200)
rating = models.IntegerField(max_length=2, choices=RATING_OPTIONS)
product = models.ForeignKey(Productbackup)
def __unicode__(self):
return self.review
class UserProfile(models.Model):
user = models.OneToOneField(User)
quote = models.CharField('About', max_length = 200, null=True, blank=True)
website = models.URLField('Personal website/blog', null=True, blank=True)
facebook = models.URLField('Facebook profile page', max_length = 200, null=True, blank=True)
twitter = models.URLField('Twitter profile page', max_length = 200, null=True, blank=True)
youtube = models.URLField('YouTube channel page', max_length = 200, null=True, blank=True)
def view_reviews(request, product_name):
product = get_object_or_404(Productbackup, url_friendly=product_name)
product_id = product.id
#get reviews for the this product
reviews = Reviewbackup.objects.filter(product_id=product_id).order_by("-created_on")
return render_to_response('reserve/templates/view_reviews.html', {'reviews':reviews},
context_instance=RequestContext(request))
{% for review in reviews %}
{{review.user}}
<br>{{review.user.userprofile.quote}}
{% endfor %}
答案 0 :(得分:1)
如果问题的条件是“不为用户使用ForeignKey,但使用CharField作为用户名”,则可以将该方法添加到Reviewbackup模型中,如:
def get_user_quote(self):
return UserProfile.objects.get(user__username=self.user).quote
并在模板中使用它:
{{ review.get_user_quote }}
但你真的应该将你的用户字段替换为ForeignKey