Django Модель: ForeignKey и отношения
У меня есть 2 модели:
class Post(models.Model):
pass
class Vote(models.Model):
post = models.ForeignKey(Post)
user = models.ForeignKey(django.contrib.auth.models.User)
Я хочу позволить зарегистрированному пользователю голосовать на сайте администратора поста. Я думаю о двух следующих решениях:
- Add 'voted' field to Post model.
- 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)
Вероятно, вы захотите добавить логику для предотвращения многократного голосования от одного и того же пользователя за одно и то же сообщение и т.д.