Передать данные из FormView в DetailView

ycrad спросил: 07 октября 2018 в 11:21 в: django

Я пытаюсь включить Celery в свой проект, чтобы он асинхронно создавал объект Hashtag. Однако мне нужно проверить, был ли объект Hashtag создан Celery. Для этого я переопределил get() в SearchResultsView:

if Hashtag.objects.filter(search_text=self.search_text).exists():.

В частности, я не знаете, почему search_text=self.search_text не работает? Возможно, требуется, чтобы я переопределил get_context_data в FormView, чтобы передать данные search_filter в DetailView? В качестве альтернативы, я должен использовать self.get_object() в get() перед использованием оператора if?

Models.py

class Hashtag(models.Model):
    search_text = models.CharField(max_length=140, primary_key=True)

Views.py
class HashtagSearch(FormView):
    model = Hashtag
    form_class = SearchHashtagForm    def get_success_url(self, search_filter, **kwargs):
        return reverse('mapping_twitter:results', kwargs={'pk':search_filter})    def form_valid(self, form):
        search_filter = self.get_tweets(form)
        iterate_tweets.delay(search_filter)
        return HttpResponseRedirect(self.get_success_url(search_filter))    def get_tweets(self, form):
        search_filter = self.request.POST.get('search_text').lower().lstrip("#")
        return search_filterclass SearchResultsView(DetailView):
    model = Hashtag
    template_name = 'mapping_twitter/results.html'    def get(self, request, *args, **kwargs):
        if Hashtag.objects.filter(search_text=self.search_text).exists():
             self.draw_histogram(request)
        return super(SearchResultsView, self).get(request, *args, **kwargs)    def get_context_data(self, **kwargs):
        context = super(SearchResultsView, self).get_context_data(**kwargs)
        return context

0 ответов