2009-07-02 5 views
1

나는 올바른 방법을 생각하고 있는지 모르겠다. 아마도 누군가 나를 똑바로 세울 것이다.하나의 속성에 여러 값을 저장하는 방법

의 내가이 포함 된 models.py 있다고 가정 해 봅시다 :

class Order(models.Model): 
    customer = models.foreignKey(Customer) 
    total = models.charField(max_length=10) 
    has_shipped = models.booleanField() 

class Product(models.Model): 
    sku = models.charField(max_length=30) 
    price = models.charField(max_length=10) 

이제 분명히 주문 제품뿐 아니라 제품을 포함한다. 주문에 제품을 추가하는 가장 좋은 방법은 무엇입니까? 내가 생각할 수있는 유일한 방법은 '제품'이라는 '주문'에 다른 필드를 추가하고 각 제품에 대한 SKV가있는 CSV로 채우는 것입니다. 명백한 이유 때문에 이것이 이상적이지는 않지만, 나는이 물건을 아직 잘 이해하지 못하고 있으며 더 좋은 방법이 무엇인지 모릅니다.

(등이 의사 코드입니다 명심, 그래서 맞춤법을 신경 쓰지 않는다)

답변

7

제품 및 주문간에 많은 관계가 있습니다. 같은

뭔가 :

class Order(models.Model): 
    customer = models.foreignKey(Customer) 
    total = models.charField(max_length=10) 
    has_shipped = models.booleanField() 
    products = models.ManyToManyField(Product) 

는 문서를 herehere를 참조하십시오.

+0

. URL의 형식을 지정하려고 할 수 있습니다. – drozzy

+0

더 좋습니까? –

+0

고마워요. 나는 오늘 "장고로 파이썬 웹 개발"을 읽고 그 결론에 도달했지만, 그것이 맞다면 하루 종일 파악하려고 노력해 왔습니다. 고맙습니다. – orokusaki

0

당신은 주문과 제품 사이 같은 다 대다 관계를 제공 할 또 하나 개의 모델을 만들 수 있습니다

이런 식으로

class OrderProducts(models.Model) 
    product = models.ForeignKey(Product) 
    order = models.ForeignKey(Order) 
+0

주문 자체가 이미 "제품 주문" – drozzy

+0

의 역할을하기 때문에 중복되는 내용입니다. 답변에 나와 있습니다. 내가이 답변을 썼을 때 나는 형식 모델을 기억하지 못했다. 장고의 ManyToManyField는 고전적인 해결책을 제안했다. – tdelev

+0

이것은 중복되지 않습니다. 나중에 가격이 바뀌면 어떻게 될까요? 가격이 변경되고 주문이 원래 제품과 만 연결 되었다면 고객이 지불 한 금액을 알 수있는 방법이 없습니다. 이렇게하면 주문 시점의 현재 상태로 제품을 미러링 할 수 있습니다. – orokusaki

관련 문제