Как создать объект внешнего ключа, используя аргументы из запроса GET - PullRequest
0 голосов
/ 18 июня 2019

Мне нужно создать подключенную модель голосования для статьи, чтобы зарегистрированный пользователь не мог дважды голосовать за одну статью. Поэтому я использую 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')

Модель голоса является наиболее распространенной, со ссылкой на пользователя и на статью.

...