나는 길고 오랫동안 궁금해하는 경우가 있습니다. 내가 3 가지 모델을 가지고 있다고 가정 해보십시오 :중첩 된 관계를 처리하는 올바른 방법
class Product(models.Model):
manufacturer = models.CharField(max_length=100)
description = models.TextField(blank=True)
class PurchasedProduct(models.Model):
product = models.ForeignKey(Product)
purchase = models.ForeignKey('Purchase')
quantity = models.PositiveIntegerField()
class Purchase(models.Model):
customer = models.ForeignKey('customers.Customer')
products = models.ManyToManyField(Product, through=PurchasedProduct)
comment = models.CharField(max_length=200)
JavaScript 프레임 워크로 작성된 API 및 클라이언트 응용 프로그램이 있습니다. 그래서 지금 그들 사이에 의사 소통을해야합니다!
{
"id": 1,
"customer": 1,
"comment": "Foobar",
"products": [
{
"id": 1,
"product": {
"id": 1,
....
},
....
},
....
]
}
/purchase/1/
그래서 내가 products
필드가 차례로 중첩 사용 PurchasedProductSerializer
를 사용하도록 지정하는 적절한 시리얼을 만들어 액세스 할 때 내가 DRF에서이 상황을 처리하는 방법을 확실하지 않다, 자연스럽게 나는 이런 식으로 뭔가를 얻을 기대 ProductSerializer
. React에서 적절한 구성 요소를 사용하여 쇼핑하는 동안 어떤 특정 제품을 어디서 구입했는지 표시하는 데 필요한 정보를 얻는 데 필요한 모든 정보가 필요합니다.
그러나 문제는 내가 POST
새 PurchasedProduct
일 때입니다. 가장 편리한 형식은 다음과 같습니다.
{
"quantity": 10,
"purchase": 1,
"product": 1
}
이 정보는 필요한 모든 정보를 전달하며 가장 작은 크기입니다. 그러나 나는 id
대신 객체가되도록 product
이 필요하므로 PurchasedProductSerializer
을 사용하여 수행 할 수 없습니다.
여기 내 질문에이 좋은 접근 방식입니다 (나에게는 매우 자연스러운 것처럼 보입니다) GET
과 POST
에 두 개의 별도의 직렬 변환기를 사용해야합니까? 이 작업을 다르게 수행해야합니까? API 및 클라이언트 응용 프로그램 작성 방법에 대한 우수 사례/서적을 가르쳐 주시겠습니까?