django내 블로그 태그를 장고에서 제공중인 샘플로 사용하는 방법을 기술하려 한다.
먼저 model.py를 본다.
class Post(models.Model): #verbose name 컬럼 별칭
title = models.CharField(verbose_name='TITLE',max_length=50)
description = models.CharField('DESCRIPTION',max_length=100,blank=True, help_text='simple description 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)# 게시물 태그 패키치
onwer =models.ForeignKey(get_user_model(),on_delete=models.CASCADE,verbose_name='OWNER',blank=True,null=True)
#User는 인증을 위한 디폴트 테이블
tags = TaggableManager(blank=True)# 게시물 태그 패키치
공식자료에 보면 패키지 사이트를 보면 알수 있는데,

django.packages.org
장고 모델로 사용할 수 있는 패키지들이 모여있다.

연동 깃허브를 들어가면 사용 설명서가 자세하게 나와있다.
django taggit에서 tag 데이터를 가져오기로 했다.
settings.py에서 태그 설정시 대소문자를 구분하지 말라는 구문도 친절하게 설명되어 있다.

더 둘러보면 model 예제를 알려준다

그 후 django-taggit을 설치해준다
pip install도 좋고 setting에서 패키지 +로 진행해줘도 좋다.

그후 settings.py에 설명서 대로 지정해주면 된다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig',
'taggit', #요부분 추가
'accounts.apps.AccountsConfig',
]
....
TAGGIT_CASE_INSENSTIVE = True
그 다음 model을 손봐준다
tags = TaggableManager(blank=True)# 게시물 태그 패키치
공식문서에 나온대로 해준다.
또한 admin도 공식문서에서 나온대로 지정해주면 된다.
admin.py
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('id','title','modify_dt','tag_list')
def get_queryset(self, request):
return super().get_queryset(request).prefetch_related('tags')
def tag_list(self,obj):
return u",".join(o.name for o in obj.tags.all())
마지막으로 migrations 작업을 해주면 끝난다.
py manage.py makemigrations
py manage.py migrate
필자도 사실은 django 입문자에 불과하기 때문에, MVT 패턴에 익숙하지 않다 그래서 교육영상을 따라하는 정도로, 설명이 불친절할 수 있으니 양해바란다... 결국은 만들어야 하지만 그 과정이 너무 힘듦....