Django Tags

UICHEOL_HWANG·2023년 8월 14일

django

목록 보기
2/4

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
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 패턴에 익숙하지 않다 그래서 교육영상을 따라하는 정도로, 설명이 불친절할 수 있으니 양해바란다... 결국은 만들어야 하지만 그 과정이 너무 힘듦....

profile
개발 취미로 하는 세일즈맨

0개의 댓글