본인의 목표를 생성하고
게시글을 생성할 때 태그처럼 목표별 게시글 작성
유저별 게시글 페이지를 볼 때
📌 2023년, 00님은
'#회사원되기' 를 위해 000일동안 노력중입니다!
'#재난에서살아남을수있는체력' 을 위해 000일동안 노력중입니다!
요런식으로 표시되도록 하고 싶음
urls.py
urlpatterns = [
path('', views.TagView.as_view()), # 새로 생성
path('<int:pk>/', views.TagView.as_view()), # 있던 태그 끌고 올 때
]
models.py
class Tag(models.Model):
tag_name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
태그 자체를 카테고리처럼 쓸 생각이라 필드가 많이 필요 없음.
user의 models.py
tag_ids = models.ManyToManyField('tag.Tag', related_name='user_tag')
마이그레이션 하면 아래와 같은 테이블이 생김
ManyToManyField에 정보를 저장할 때는 add 사용
view.py
class TagView(APIView):
def post(self, request):
""" 목표를 직접 생성 """
serializer = TagSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
user = User.objects.get(pk=request.user.pk)
user.tag_ids.add(serializer.data['id'])
return Response({"message":"성공."}, status=status.HTTP_201_CREATED)
def put(self, request, pk):
""" 이미 있는 목표를 설정 """
user = User.objects.get(pk=request.user.pk)
print(user)
if user.tag_ids == pk:
return Response({"message":"이미 설정된 목표입니다."}, status=status.HTTP_400_BAD_REQUEST)
else:
try:
tag = Tag.objects.get(pk=pk)
user.tag_ids.add(tag)
except ObjectDoesNotExist:
return Response({"message":"존재하지 않는 태그입니다."}, status=status.HTTP_400_BAD_REQUEST)
return Response({"message":"성공."}, status=status.HTTP_200_OK)
아직 게시글 담당쪽에서 유저별 게시글 조회가 마무리가 안되어서 오늘은 여기까지.
내일 이어서 유저별 게시글 조회할 때 유저의 게시글에 해당목표태그가 지정된 개수를 계산해서 정보값으로 보내주는 작업해야 함.