inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

User 모델에 Follow-Unfollow 관계 필드를 구현하고, Follow 기능 구현

팔로우 데이터 양방향 저장되는 문제(보충내용 질문)

341

이종도

작성한 질문수 2

0

안녕하세요

강의하단 보충내용이 이해가 되지 않아서 질문드립니다.

follower_set = models.ManyToManyField(
    "self", blank=True, symmetrical=False,
    related_name="following_set",
)

위와같이 설정하면

following_set 을 따로 만들지 않는건가요?

following_set 이 있으면 makemigrations 에러가 발생하고,

지운다고 following_set 테이블을 만들어주는 것 같지 않아서요

 

related_name 에 대한 이해가 아직 부족해서 일단 아래와 같이 처리했는데 보충내용에 대한 설명 더 부탁드립니다.

follower_set = models.ManyToManyField("self", symmetrical=False, related_name="+", blank=True)
following_set = models.ManyToManyField("self", symmetrical=False, related_name='+', blank=True)

 

 

 

 

python react docker django

답변 2

0

이종도

테이블 하나로도 된다는걸 알았지만 강의에 맞추려보다보니 생각이 많아졌네요

빠른 답변 감사합니다!

0

이진석

안녕하세요.

models.ManyToManyField 지정을 통해, A 모델과 B 모델 간의 관계를 저장하는 새로운 테이블이 생성이 됩니다.  기본적으로 필드는 총 3개 (id(기본키), a_id (A모델에 대한 외래키), b_id (B모델에 대한 외래키))로 스키마가 구성이 되구요. 두 모델 간의 M2M 관계 지정은 이 테이블 하나면 충분합니다.

A모델과 B모델 간에 ManyToManyField 관계를 지정했을 때,

1. A모델을 통해 B모델을 조회할 때 follower_set 속성으로 참조를 한다고 한다면,

2. B모델을 통해 A모델을 조회할 수도 있습니다. 역참조인거죠. 이는 related_name으로 지정한 following_set 속성으로 조회할 수 있습니다.

그러니, following_set 필드를 별도로 추가하실 필요가 없습니다. 하나의 M2M 필드를 참조/역참조의 형태로 활용하시면 됩니다.

유저A가 유저B를 팔로잉을 한다는 것은 역으로 유저B의 팔로워 중에 유저A가 있다는 뜻이니깐요.

안녕하세요.

0

62

1

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

0

282

1

useEffect 훅에서 else 유무에 따른 결과

0

221

1

useAxios 훅의 dependency array 설정

0

254

1

useEffect에서 변수 업데이트 관련 질문

0

385

1

rest_framework.generics.CreateAPIView의 model 속성 유무

0

273

1

bootstrap4

0

479

4

리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요

1

373

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

577

3

useState는 필수일까요?

0

269

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

606

4

Django allauth를 사용한 소셜 로그인 시 에러

0

657

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

561

2

useLocalStorage() 함수 사용여부

0

233

1

django에 LOGIN_URL = '/accounts/login/'의 의미?

0

451

1

리듀서의 의미 재확인

0

435

1

simple-jwt Refresh Token 사용 노하우

0

903

2

docker compose 를 통한 배포 관련 오류 문의

0

683

1

파이썬 속도 장고 관련 궁금한게 있습니다.

0

368

1

is_like_user

0

236

1

related_name 오류

0

276

1

re_path 오류

0

263

1

re_path url

0

252

1

No post matches the given query

0

667

2