Добавление тегов с помощью Django-Taggit

Я пробовал разные туториалы для Django-taggit, но почему-то все они показывают, как добавлять теги через Admin. Мне было интересно, могу ли я добавить теги, используя представление и шаблон, при создании экземпляра модели? или я должен добавлять теги только к существующим элементам? Есть ли какие-нибудь свежие руководства по Django-Taggit или моему лучшему приложению для тегов?


person Best version    schedule 28.04.2016    source источник


Ответы (2)


Их документация довольно обширна. После того, как вы настроили свою модель, вы можете использовать поле тега так же, как любое другое поле в форме. Он будет автоматически настроен для разбора тегов.

Вот очень простой рабочий пример.

просмотры.py

from django.shortcuts import render
from .models import NewspaperIndex
from .forms import NewIndexForm

def overview(request):
    if request.method == "POST":
        form = NewIndexForm(request.POST)
        if form.is_valid():
            form.save()
    else:
        form = NewIndexForm()

    indexes = NewspaperIndex.objects.all()

    context = {'form': form,
               'indexes': indexes
           }

    return render(request, 'newsindex/overview.html', context)

модели.py

from django.db import models
from taggit.managers import TaggableManager


class NewspaperIndex(models.Model):
    title = models.CharField(max_length=200)
    date = models.DateField()
    abstract = models.TextField()
    tags = TaggableManager()

    def __str__(self):
        return self.title

формы.py

import datetime

from django import forms
from django.forms import ModelForm
from .models import NewspaperIndex


class NewIndexForm(forms.ModelForm):

    class Meta:
        model = NewspaperIndex
        fields = ['title', 'date', 'abstract', 'tags']

шаблоны/newsindex/overview.html

  <form class="" action="./" method="post">
    {% csrf_token %}
    {{form.as_p}}
    <input type="submit" name="submit" value="Submit">
  </form>
person Stephen Delaney    schedule 06.06.2016

Если вы хотите добавить тег из оболочки, попробуйте:

tag='tag to add'
post=NewspaperIndex.objects.all()[0] #pick an object, to add tag to
post.tags.add(tag)
person alis01    schedule 22.04.2020