Django создает объект только один раз по идентификатору пользователя - PullRequest
0 голосов
/ 03 июля 2010

Я делаю небольшую систему голосования, по которой можно проголосовать за ответ, но только один раз.Я не создал форму для голосования, я создаю голос, когда кто-то его отправляет (получает доступ к ссылке) Как я могу сделать, чтобы в моей ситуации человек мог голосовать только один раз?Было бы лучше, если бы я сделал форму вместо этого?мой код:

def voteup(request,classname, id):
   answer = Answer.objects.get(pk = id)
   c = Classroom.objects.get(classname = classname)
   voted_up_by = Membership.objects.filter(classroom = c).get(member = request.user)
   vote = VoteUpAnswer.objects.create(answer = answer, voted_up_by = voted_up_by) 
   url = reverse('inside_classroom', kwargs={'classname': classname})
   return HttpResponseRedirect(url)

спасибо!

1 Ответ

3 голосов
/ 03 июля 2010

Я предполагаю, что voted_up_by определяет пользователя, который проголосовал. Если это правда, вы можете проверить, был ли голос еще добавлен. Например

try:
    VoteUpAnswer.objects.get(voted_up_by = voted_up_by)
except VoteUpAnswer.DoesNotExist:
    # No vote from "voted_up_by" exists
    VoteUpAnswer.objects.create(answer = answer, voted_up_by = voted_up_by)
else:
    # User already voted. Redirect to an error page, for example.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...