11

アプリの各ボードにペットの写真のいいねボタンを作成しようとしていますが、整数が含まれているため、作成方法がわかりません。通常、作成する関数のアイデアと理解があります。

ユーザーがいいねボタンをクリックしたとき。いいねボタンが1つ増えて画像の近くに表示されます。

これは私の画像モジュールです。

class Picture(models.Model):
    user = models.ForeignKey(User)
    board = models.ForeignKey(Board ,related_name='lo')
    image = models.FileField(upload_to="images/",blank=True,null=True)
    description = models.TextField()
    is_primary = models.BooleanField(default=False)

    def __unicode__(self):
        return self.description

誰かがいいねボタンの基本を作成するのを手伝ってくれませんか? これで関数のロジックが理解できました。

4

3 に答える 3

34

多くのユーザーがたくさんの写真を好きになると思います。

別のモデルが必要になります。

class Like(models.Model):
    user = models.ForeignKey(User)
    picture = models.ForeignKey(Picture)
    created = models.DateTimeField(auto_now_add=True)

そして、このようにいいねの数を呼び出します:

p = Picture.objects.get(...)
number_of_likes = p.like_set.all().count()

いいねの数を増やすには、ビューでそのようなことをしたいと思うかもしれません。

def like(request, picture_id):
    new_like, created = Like.objects.get_or_create(user=request.user, picture_id=picture_id)
    if not created:
        # the user already liked this picture before
    else:
        # oll korrekt

したがって、誰かが同じ「いいね」ボタンを2回クリックするたびに、その人は1つとして数えられます。

現在のユーザーが表示された画像をすでに気に入っているかどうかを確認するには、次の手順に従います。

def picture_detail(request, id):
    pic = get_object_or_404(Picture, pk=id)
    user_likes_this = pic.like_set.filter(user=request.user) and True or False

お役に立てれば。

于 2013-03-14T11:35:02.910 に答える
0

同様のことをしたかったのですが、「django-likes」アプリを使用するとうまくいきました。

モデルの最後に、

secretballot.enable_voting_on(Picture)

そして、ビュー内で投票を使用できます。

ここで確認できます: https://pypi.python.org/pypi/django-likes

于 2014-04-14T02:12:51.950 に答える