Как отобразить поле выбора из всех возможных тегов в django-admin при использовании django-taggit?
Я пытаюсь вывести в админ-панели Django для каждого поста поле для тегов, в которое можно ввести нужный тег или выбрать из всех доступных тегов. Выбрать из всех доступных тегов не получается. Подскажите, как именно это должно быть реализовано?
from django.contrib import admin
from django.db import models
from taggit.forms import TagWidget
from .models import Post, Comment
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
fields = ('title', 'slug', 'author', 'body', 'publish', 'status', 'tags')
list_filter = ('status', 'created', 'publish', 'author')
list_display = ('title', 'slug', 'author', 'publish', 'status', 'get_tags')
prepopulated_fields = {'slug': ('title',)}
raw_id_fields = ('author',)
formfield_overrides = {
models.ManyToManyField: {'widget': TagWidget},
}
def get_tags(self, obj):
return ", ".join(o for o in obj.tags.names())
Я могу отобразить все теги, но я хочу выбрать их. После нажатия они должны переходить в поле выбранного тега. Сейчас я отображаю все теги следующим образом:
from django.contrib import admin
from django.db import models
from taggit.forms import TagWidget
from .models import Post, Comment
from taggit.models import Tag, TaggedItem
@admin.register(TaggedItem)
class TaggetItem(admin.ModelAdmin):
fields = ['all']
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
fields = ('title', 'slug', 'author', 'body', 'publish', 'status',
'tags', 'all_tags')
list_filter = ('status', 'created', 'publish', 'author')
list_display = ('title', 'slug', 'author', 'publish', 'status',
'get_tags')
prepopulated_fields = {'slug': ('title',)}
raw_id_fields = ('author',)
# filter_horizontal = ('tags',)
formfield_overrides = {
models.ManyToManyField: {'widget': TagWidget},
}
readonly_fields = ('all_tags',)
def get_tags(self, obj):
return ", ".join(o for o in obj.tags.names())
def all_tags(self, obj):
return ", ".join(tag.name for tag in Tag.objects.all())
all_tags.short_description = 'All tags'