Отображение всех тегов Django-taggit для каждого данного объекта - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь отобразить все теги django-taggit, связанные с данным объектом, когда я запрашиваю.

Я пытался добавить эту функцию в свой шаблон search_result.html, как это, но без теговотображаются:

{% if  page_obj.object_list %}
       <ol class="row top20">

{% for result in page_obj.object_list %}

          <div class="showcase col-sm-6 col-md-4">
           <a href="{{ result.object.get_absolute_url }}">
              <h3>{{result.object.title}}</h3>
              <img src="{{ result.object.image }}" class="img-responsive">
           </a>

<!-- I want to display them in the span below -->
      <div class="text-center">
          <span class="label label-info">{{ result.object.ptags.name }}</span>
      </div>


         </div>
{% endfor %}
      </ol>
   </div>
{% endif %}

Мои модели:

class Product(models.Model):
    title = models.CharField(max_length=255, default='')
    slug = models.SlugField(null=True, blank=True, unique=True, max_length=255, default='')
    description = models.TextField(default='')

    ptags = TaggableManager()

    timestamp = models.DateTimeField(auto_now=True)

    def _ptags(self):
        return [t.name for t in self.ptags.all()]

    def get_absolute_url(self):
        return reverse('product',
                       kwargs={'slug': self.slug})


    def __str__(self):
        return self.title

Моя пользовательская функция forms.py:

from haystack.forms import FacetedSearchForm


class FacetedProductSearchForm(FacetedSearchForm):

    def __init__(self, *args, **kwargs):
        data = dict(kwargs.get("data", []))
        self.ptag = data.get('ptags', [])
        super(FacetedProductSearchForm, self).__init__(*args, **kwargs)

    def search(self):
        sqs = super(FacetedProductSearchForm, self).search()

        if self.ptag:
            query = None
            for ptags in self.ptag:
                if query:
                    query += u' OR '
                else:
                    query = u''
                query += u'"%s"' % sqs.query.clean(ptags)
            sqs = sqs.narrow(u'ptags_exact:%s' % query)

        return sqs

И я передаю формы впросмотров как это:

class FacetedSearchView(BaseFacetedSearchView):

    form_class = FacetedProductSearchForm
    facet_fields = ['ptags']
    template_name = 'search_result.html'
    paginate_by = 6
    context_object_name = 'object_list'

Как я могу это сделать?

1 Ответ

0 голосов
/ 03 мая 2019

Можете ли вы попробовать это вместо

<span class="label label-info">{{ result.object.ptags.names }}</span>

Вы можете циклически выполнять запросы ptags.names для отображения отдельных тегов, например:

{% for tag in result.object.ptags.names %}
    {{ tag }}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...