240409

송용진·2024년 4월 9일

6 Blog 앱 확장 - Tag 달기
6.2 개발 코딩하기
...
라이브러리 설치

config>settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookmark.apps.BookmarkConfig',
    'blog',
    # 새로 입력
    'taggit.apps.TaggitAppConfig',
    'taggit_templatetags2',
]
#...
TAGGIT_CASE_INSENSITIVE=True
TAGGIT_LIMIT=50

blog>models.py

# blog/models.py
from django.db import models
from django.urls import reverse
from taggit.managers import TaggableManager # 추가
# Create your models here.
# id, title, slug, description, content, create_dt, modify_dt

class Post(models.Model):
    title = models.CharField(verbose_name='TITLE', max_length=50)
    slug = models.SlugField(verbose_name="SLUG", unique=True, allow_unicode=True, help_text="one word for title alias.")
    description = models.CharField("DESCRIPTION", max_length=100, blank=True, help_text="simple text")
    content = models.TextField("CONTENT")
    create_dt = models.DateTimeField("CREATE DATE", auto_now_add=True)
    modify_dt = models.DateTimeField("MODIFY DATE", auto_now=True)
    tags = TaggableManager(blank=True) # 추가

python manage.py makemigrations
python manage.py migrate

# blog/admin.py
from django.contrib import admin
from blog.models import Post

# Register your models here.
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display=('id', 'title', 'modify_dt', 'create_dt', 'slug')
    list_filter=("modify_dt",)
    search_fields=('title', 'content')
    prepopulated_fields = {"slug":("title", )}

    # 추가
    def get_queryset(self, request):
        return super().get_queryset(request).prefetch_related('tags')
    def tag_list(self, obj):
        return ', '.join(o.name for o in obj.tags.all())

...

7 Blog 앱 확장 - 댓글
8
Q-객체

profile
개발자

0개의 댓글