From 164e22f9bdaaec4c3736daade97e61090f55371e Mon Sep 17 00:00:00 2001 From: gahyeon <1000ji1@naver.com> Date: Sat, 1 Apr 2023 00:30:21 +0900 Subject: [PATCH 1/2] =?UTF-8?q?4/1=20=EC=9D=B4=EA=B0=80=ED=98=84=20#1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "[1\354\243\274\354\260\250]/gahyeon2/gaga.py" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "[1\354\243\274\354\260\250]/gahyeon2/gaga.py" diff --git "a/[1\354\243\274\354\260\250]/gahyeon2/gaga.py" "b/[1\354\243\274\354\260\250]/gahyeon2/gaga.py" new file mode 100644 index 0000000..7bf224c --- /dev/null +++ "b/[1\354\243\274\354\260\250]/gahyeon2/gaga.py" @@ -0,0 +1 @@ +print("i'm gaga") \ No newline at end of file From 6c17438719c18dc0b56b7d74b03bcc6b83270e01 Mon Sep 17 00:00:00 2001 From: gahyeon <1000ji1@naver.com> Date: Fri, 5 May 2023 11:13:51 +0900 Subject: [PATCH 2/2] =?UTF-8?q?3=EC=A3=BC=EC=B0=A8=20=EC=84=B8=EC=85=98=20?= =?UTF-8?q?=EA=B0=95=EC=9D=98=20=EC=9E=90=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "[3\354\243\274\354\260\250]/admin.py" | 25 +++++++++++++++ "[3\354\243\274\354\260\250]/models.py" | 41 +++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 "[3\354\243\274\354\260\250]/admin.py" create mode 100644 "[3\354\243\274\354\260\250]/models.py" diff --git "a/[3\354\243\274\354\260\250]/admin.py" "b/[3\354\243\274\354\260\250]/admin.py" new file mode 100644 index 0000000..e4ed9df --- /dev/null +++ "b/[3\354\243\274\354\260\250]/admin.py" @@ -0,0 +1,25 @@ +from django.contrib import admin + +from blog.models import Post, Category, Tag, Comment + + +@admin.register(Post) +class PostAdmin(admin.ModelAdmin): + list_display = ('id', 'category', 'tag_list', 'title', 'description', 'image', 'create_dt', 'update_dt', 'like') + + def tag_list(self, obj): + return ','.join([t.name for t in obj.tags.all()]) + + def get_queryset(self, request): + return super().get_queryset(request).prefetch_related('tags') +@admin.register(Category) +class CategoryAdmin(admin.ModelAdmin): + list_display = ('id', 'name', 'description') + +@admin.register(Tag) +class TagAdmin(admin.ModelAdmin): + list_display = ('id', 'name') + +@admin.register(Comment) +class CommentAdmin(admin.ModelAdmin): + list_display = ('id', 'post', 'short_content', 'create_dt', 'update_dt') \ No newline at end of file diff --git "a/[3\354\243\274\354\260\250]/models.py" "b/[3\354\243\274\354\260\250]/models.py" new file mode 100644 index 0000000..885f7a3 --- /dev/null +++ "b/[3\354\243\274\354\260\250]/models.py" @@ -0,0 +1,41 @@ +from django.db import models + +# N 테이블에 field 정의 +class Post(models.Model): + category = models.ForeignKey('Category', on_delete=models.SET_NULL, blank=True,null=True) + tags = models.ManyToManyField('Tag', blank=True) + title = models.CharField('TITLE',max_length=50) + description = models.CharField('DESCRIPTION', max_length=100,blank=True, help_text='simple one-line text.') + image = models.ImageField('IMAGE',upload_to='blog/%Y/%m/',blank=True,null=True) + content = models.TextField('CONTENT') + create_dt = models.DateTimeField('CREATE DT',auto_now_add=True) + update_dt = models.DateTimeField('UPDATE DT', auto_now=True) + like = models.PositiveSmallIntegerField('LIKE',default=0) + + def __str__(self): + return self.title + +class Category(models.Model): # P:C = N : 1 + name = models.CharField(max_length=50,unique=True) + description = models.CharField('DESCRIPTION',max_length=100,blank=True,help_text='simple one-line text.') + + def __str__(self): + return self.name + +class Tag(models.Model): # P:T = N : N + name = models.CharField(max_length=50) + + def __str__(self): + return self.name + +class Comment(models.Model): # P:C = 1 : N + post = models.ForeignKey(Post,on_delete=models.CASCADE,blank=True,null=True) + content = models.TextField('CONTENT') + create_dt = models.DateTimeField('CREATE DT',auto_now_add=True) + update_dt = models.DateTimeField('UPDATE DT',auto_now=True) + + @property + def short_content(self): + return self.content[:10] + def __str__(self): + return self.short_content