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-객체