jango - ManyToManyField
ManyToMany 필드를 사용하는 이유
중간 모델을 쓰는 것보다 many to many field를 쓰면 좋은 점이 무엇일까? 성능상의 이점에 대해선 여러가지 장점이 있을 수도 있겠지만 내가 이해한 부분은 한가지다. 바로 개발할 때 유지보수의 편리함이다.
class Pizza(models.Model):
name = models.CharField
toppings = models.ManyToManyField('Topping')
class Topping(models.Model):
name = models.CharField
Django에서 생성된 인스턴스들을 저장하면 데이터베이스에도 저장이 된다.
ManyToManyField를 왜 쓸까요? 해당 필드를 사용하면 다대다 관계의 테이블을 쉽게 정의할 수 있습니다. 위의 예시에서 보이듯이 피자와 토핑이 연결되고, 소스와 타겟 모델이 다르다.
클래스가 3개에서 2개로 줄어든다는 것은 큰 이점이 있는데요. 그 부분에 문제가 생겼을 때 개발자가 디버깅 시 보아야하는 코드의 양이 줄어듭니다. 그리고 클래스를 3개로 만든다고 해서 더 성능이 좋아지거나 커지는 것은 아닙니다.
ManyToMany 필드를 역참조하는 관계에서는 클래스가 해당 필드를 가지고 있진 않지만 해당 클래스를 참조하는 클래스의 이름을 B라고 할 때, b_set를 속성으로 갖습니다. ManyToMany 필드에서는 related_name을 가지고 있는데요.
본인이 원하는 이름으로 커스터마이징 할 수 있습니다. Pizza_set보다 pizzas가 더 직관적이지 않습니까? *_set의 형태보다 이것이 훨씬 더 직관적입니다.
References
- Tips for Using Django's ManyToManyField - (https://www.revsys.com/tidbits/tips-using-djangos-manytomanyfield/)
Author And Source
이 문제에 관하여(jango - ManyToManyField), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hion8800/12312저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)