Автозаполнение - многократное заполнение поля тега в форме Django

Привет!

Я хочу использовать tagfield, как показано здесь, в рамках фреймворка django: https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/

На данный момент я следую предложению использовать: taggit (https://django-taggit.readthedocs.io/en/latest/) и dal (https://django-autocomplete-light.readthedocs.io/en/master/) расширение.

Я хочу иметь поле multipinput, получающее теги из json-данных, позволяющее автозаполнение, использующее bootstrap дизайн.

За последние 5 дней я просто сошел с ума, чтобы заставить это нормально работать, тестируя различные подходы... !!!!grmxchl!!!!

Может ли кто-нибудь помочь мне и предложить принципиальное решение для этого.

Моя текущая реализация показывает объекты вместо значений и, более того, похоже, каким-то образом уничтожает значения в определенных случаях. Однако это выглядит как so. А должно выглядеть как so.

Мой код: Модель

class SrsReqs(models.Model):
    uid_req = models.AutoField(db_column='uid_Req', primary_key=True)  # Field name made lowercase.
    req_title = models.TextField(db_column='Req_title', blank=True, null=True)  # Field name made lowercase.
    req_userstory = models.TextField(db_column='Req_userstory', blank=True, null=True)  # Field name made lowercase.
    req_tags = models.ManyToManyField(SrsTags)
    req_issues = models.ManyToManyField(SrsWsIssues, related_name='req')  # through='ReqIssues',

    tags = TaggableManager()

    class Meta:
        db_table = 'SRS_Reqs'
        ordering = ['uid_req']

    def __str__(self):
        return self.req_userstory

View

from django.shortcuts import render, get_object_or_404
from .models import SrsReqs
from taggit.models import Tag
from .forms import UpdateReq

class ModifyRequ(TemplateView):

    template_name = 'requirements/change_req.html'

    def __init__(self, *args, **kwargs):
        super(ModifyRequ, self).__init__()

    def get(self, request, *args, **kwargs):
    # get handler, if page where called by GET request, e.g.: <form action="#" method="get">
        qs = Tag.objects.all()
        tag_list = [q.name for q in qs]

        uid_req = kwargs['uid_req']  # variable coming from urls.py
        requirement = get_object_or_404(SrsReqs, pk=uid_req)  # get (whole) req from model

        form = UpdateReq(request.POST or None, instance=requirement)
        context = {'form': form, 'requirement': requirement, 'tag_list': tag_list, }
        return render(request, self.template_name, context)

Форма

from .models import SrsReqs
from dal import autocomplete
from taggit.forms import *

class UpdateReq(autocomplete.FutureModelForm):


    class Meta:
        model = SrsReqs
        fields = ('req_userstory', 'tags')
        widgets = {
            'tags': forms.TextInput(attrs={'data-role': 'tagsinput', 'id': 'tag-input', 'class': 'tagsinput'}),
            'req_userstory': forms.Textarea(attrs={'class': 'textarea form-control auto-resize text-dark', 'rows': '4'})
        }

    def __init__(self, *args, **kwargs):
        super(UpdateReq, self).__init__(*args, **kwargs)
        # Making location required
        self.fields['tags'].required = False

В конце результат должен быть похож на то, как это реализовано с помощью тегов @ stackoverflow.

Frank

Вернуться на верх