Django/Django study

[Django] 친구추가, 팔로우 목록조회

카늬 2022. 12. 7. 14:53

models.py

#친구목록
class Follow(models.Model):
    """
    유저 
    친구유저
    """
    user = models.OneToOneField(User, on_delete=models.CASCADE,related_name="user")
    to_user   = models.ManyToManyField(User,related_name="to_user")

 

migrate

python manage.py makemigrations
python manage.py migrate

 

admin.py

from .models import User,Profile,Follow

.....

admin.site.register(Follow)

 

urls.py

urlpatterns = [

	.....
    
    #팔로우
    path('follow_list/<int:user_id>/',views.follow_list,name='follow_list'),
]

views.py

#팔로우 목록
@login_required(login_url="common:login")
def follow_list(request,user_id):
    follow = get_object_or_404(Follow,user_id=user_id)
    context = {"follow" : follow}
    return render(request,"common/follow_list.html",context)

 

follow_list.html

{% extends 'base/base.html' %}
{% load board_filter %}
{% block content %}


<div class="container my-3" >
    <div class = "row">
        <div  class ="col-xs-8 col-sm-6">
            <table class="table">
                <thead>
                    <tr class="text-center table-dark">
                        <th>친구</th>     
                    </tr>
                </thead>
                <tbody>
                    {% if follow%}
                        
                    {%for user in follow.to_user.all%}
                    <tr class-"text-start">
                        <td>{{user.profile.nickname}}</td>
                    </tr>
                    {% endfor %}
                    {% else %}
                    <tr>
                        <td colspan="4">친구가 없습니다.</td>
                    </tr>
                    {% endif %}
                </tbody>
            </table>
        </div>      
        <div  class ="col-xs-4 col-sm-6">
            <table class="table">
                <thead>
                    <tr class="text-center table-dark">
                        <th>친구추가</th>     
                    </tr>
                </thead>
                <tbody>
                    
                </tbody>
            </table>
        </div>
    </div>
</div>
{% endblock %}

{% block script %}

{% endblock %}

실행화면

새로운 유저를 생성하였을 경우 "Follow"를 생성해 주어야 되기 때문에 회원가입에 코드 따로 추가해 주었다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------user에 follow컬럼을 manytomany로 생성하게 되면 중간단계인 위의 Follow모델을 자동으로 생성해준다고 한다.

나중에 수정할 부분이다