Я пытаюсь включить 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_filter
class 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