Django Модель: ForeignKey и отношения

У меня есть 2 модели:

class Post(models.Model):
   pass

class Vote(models.Model):
      post = models.ForeignKey(Post)
      user = models.ForeignKey(django.contrib.auth.models.User)

Я хочу позволить зарегистрированному пользователю голосовать на сайте администратора поста. Я думаю о двух следующих решениях:

  1. Add 'voted' field to Post model.
  2. Customize Post's Admin forms by add a Button control and implement do_vote() function in Post model to call when the Button is clicked.

Есть ли у вас другие решения? Кроме того, я не знаю, как реализовать 2 вышеуказанных решения. Не могли бы вы дать мне несколько строк кода?

На ваш класс PostAdmin вы можете добавить действие:

class PostAdmin(admin.ModelAdmin):
    ...
    actions = [vote_on_post,]

и затем вы можете реализовать vote_on_post метод, основанный на этой документации, должно быть что-то вроде этого:

@admin.action(description='Vote on action')
def vote_on_post(modeladmin, request, queryset):
    user = request.user
    for post in queryset:
        Vote.objects.create(user=user,post=post)

Вероятно, вы захотите добавить логику для предотвращения многократного голосования от одного и того же пользователя за одно и то же сообщение и т.д.

Вернуться на верх