Как добавить некоторые CSS в сохраненные значения с автозаполнением Django? - PullRequest
0 голосов
/ 31 мая 2019

Я переопределил метод get_results autocomplete-light следующим образом, чтобы выделить один тег жирным шрифтом:

views.py

class TagAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self, **kwargs):
        qs = Tag.objects.all()

        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs


    def get_results(self, context):
        results_list = []
        for result in context["object_list"]:
            text2show = "{}"
            tag_occurrences = result.org_set.count()

            if tag_occurrences == 1:
                text2show = '<b>{}</b>';

            results_list.append({
                "id": self.get_result_value(result),
                "text": format_html(text2show, self.get_result_label(result)),
                "selected_text": format_html(text2show, self.get_selected_result_label(result)),
            })

        return results_list

Все отлично работает, если я ищу тег, но если я пытаюсь просмотреть сохраненное событие, все его теги представляются без какого-либо стиля.

forms.py

class EventForm(forms.ModelForm):
    class Meta:
        model = Event
        fields = "__all__" 

        widgets = {
            'tags': autocomplete.ModelSelect2Multiple(url='myapp:tag-autocomplete', attrs={'data-html': True})
        }


    def __init__(self, *args, **kwargs):

        super(EventForm, self).__init__(*args, **kwargs)

        # if I try to edit an event
        if self.instance:

            # self.fields['tag'].queryset = ???

А это часть моего шаблона:

<form method="post" class="form-horizontal">
    {% csrf_token %}
    {% for field in myform %}
    <div class="form-group form-group-lg">
        <label for="{{ field.id_for_label }}" class="col-sm-4 control-label">{{field.label}}</label><div class="col-sm-4">
        {{ field }}
        </div>
    </div>
    {% endfor %}
    {{ myform.media }}
</form> 

Есть ли способ манипулирования self.fields ['tag']. Queryset queryset для отображения имен полей жирным шрифтом или другого элегантного решения?

Спасибо.

обновление models.py

class Tag(models.Model):
    name = models.CharField('Tag name', max_length=255)

    class Meta:
        ordering = ['name']

    def __init__(self, *args, **kwargs):

        return mark_safe("<b>%s</b>" % self.name)

    def __str__(self):
        return self.name
...