Sparta Coding Club/Today I Learned [TIL]

[TIL] #DAY - 063 - ManyToMany 필드 확장하기 (Django)

양한마리 2022. 12. 2. 01:30
728x90



django 에서 ManyToMany 필드를 사용 할 때
through 를 사용하여 중간 테이블을 지정하여 사용 할 수 있다. 

 




Django ManyToManyField에 필드 확장하기

class Products(models.Model): # 상품정보
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
    products_name = models.CharField('상품명', max_length=50)
    original_price = models.IntegerField('정상가')
    discount_price = models.IntegerField('할인가')
    discount_rate = models.DecimalField('할인율', max_digits=3, decimal_places=2)
    review_count = models.IntegerField('리뷰')
    category = models.ManyToManyField("Category", blank=True, through="ProductCategoryRelation")

    
class Category(models.Model): # 카테고리
    main_category_name = models.CharField('메인 카테고리명', max_length=50)
    main_category_number = models.IntegerField('메인 카테고리 번호')
    sub_category_name = models.CharField('서브 카테고리명', max_length=50)
    sub_category_number = models.IntegerField('서브 카테고리 번호')


class ProductCategoryRelation(models.Model): # 상품정보 <-- 중간 관계테이블 --> 카테고리
    products = models.ForeignKey(Products, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

위 코드 에서 상품정보랑 카테고리를 중간 관계 테이블로 엮어 줄 때 ManyToMany 필드 속성으로 through를 지정하여 사용 한다.

728x90
반응형