Мне нужно создать подключенную модель голосования для статьи, чтобы зарегистрированный пользователь не мог дважды голосовать за одну статью. Поэтому я использую get_or_create () и не понимаю, как вытащить статьи из kwargs
class CollDetailView(DetailView):
model = Art
template_name = 'art_detail.html'
queryset = Art.objects.all_with_related_persons_and_score()
def get_context_data(self, **kwargs):
ctx = super().get_context_data()
vote = Art.objects.all_with_related_persons_and_score()
#returns the number of created objects of votes
if self.request.user.is_authenticated:
voted = Vote.objects.get_or_create(
author_id=self.request.user,
art_id=self.object
)
if not voted:
vote_form_url = reverse(
'vote',
kwargs={'art_id': self.object.slug}
)
ctx['vote_form_url'] = vote_form_url
ctx['votes'] = vote
return ctx
как правильно написать createview
class Create_Vote(CreateView):
model = Vote
template_name = 'art_detail.html'
def form_valid(self, form):
model = form.save(commit=False)
model.author_id = self.request.user
model.art_id = kwargs['art_id']#??????????????
model.save()
return HttpResponseRedirect(self.get_success_url())
def get_success_url(self):
return reverse('art_detail')
Модель голоса является наиболее распространенной, со ссылкой на пользователя и на статью.