0

特定のレビューの「ユーザー」(CharField) を取得し、UserProfile の一部として定義されているそのユーザーに関連付けられた「引用」を返すモデル メソッドを作成したいと考えています。メソッドとテンプレートの両方を作成しようとしています。これまでに試したことはうまくいかないようです。

これを行う最善の方法は、おそらく Reviewbackup 内の「ユーザー」フィールドをユーザーへの ForeignKey にすることだと思いますが、メソッドでそれを実行できるようにする方法を知りたいので、学習できます。

models.py

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)

ビュー.py

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 %}
4

1 に答える 1

1

問題の状態が「ユーザーに ForeignKey を使用せず、ユーザー名に C​​harField を使用する」という場合は、次のようにメソッドを Reviewbackup モデルに追加できます。

def get_user_quote(self):
    return UserProfile.objects.get(user__username=self.user).quote

テンプレートで使用します。

{{ review.get_user_quote }}

しかし、ユーザーフィールドをForeignKeyに置き換える必要があります

于 2012-09-28T06:58:43.957 に答える