1

私は自分のウェブサイトのフォーラムを作成しています。StackOverFlow Web ページ (つまり、この Web サイト) の「これはあなたのお気に入りの質問です」ボタンがどのように機能するかを知りたいですか?

私はジャンゴを使用しています。

次のようなモデルを作成しました。

models.py

class Question(models.Model):
    user=models.ForeignKey(User)
    created=models.DateTimeField(auto_now_add=True)
    topic=models.ForeignKey(Topic)
    question=models.TextField()
    tags=models.CharField(max_length=50,blank=True)


class Favourites(models.Model):
    '''
    Does this your Favourite Question'''
    user=models.ForeignKey(User)
    favourite=models.BooleanField(default=False)
    question=models.ForeignKey(Question)

また、特定の質問やその他の変更されたモデルの合計お気に入りを取得するビューを作成する方法も知りたいです。

4

2 に答える 2

2
  1. おそらく「お気に入り」フィールドは必要ありません。特定のユーザーに関連する特定の質問のエントリがテーブルにある場合、その質問はユーザーのお気に入りであると想定できます。

  2. 質問 ID を受け取るビューを作成し、現在ログインしているユーザーのお気に入りとしてマークする必要があります。

    def mark_as_favorite(request, question_id, *args, **kwargs):
        if request.user.is_authenticated():
            question = get_object_or_404(Question, id=question_id)
            favorite = Favourite.objects.create(user=request.user, question=question)
            return HttpResponse("Marked")
        else:
            return HttpResponseForbidden("User is not logged in")
    
  3. 特定の質問のお気に入りの合計を見つけるのは簡単です。

    def question(request, quesiton_id, *args, **kwargs):
        question = get_object_or_404(Question, id=question_id)
        favorites = Favourites.objects.filter(question=question)
        favorites_count = favorites.count()
        return render_to_response('template', {'question':questions, 'favorites_count':favorites_count}, context_instance=RequestContext(request))
    
于 2013-05-23T05:22:30.637 に答える