0

나는 다음과 같은 경우가 있습니다 장고 모델은 많은 분야에 많은 deifinition

class Product(models.Model): 
    name = models.CharField(max_length=200) 

class Order(models.Model): 
    product = models.ManyToManyField(Product) 
    quantity = models.IntegerField(default=0,validators=[MinValueValidator(1)]) 

와의

하나의 질서를 만드는 동안 나는 각 제품에 대해 다른 수량을 입력하고 싶은

class ProductsInline(admin.TabularInline): 
    model = Order.product.through 

class OrderAdmin(admin.ModelAdmin): 
    inlines = [ProductsInline,] 
    filter_horizontal = ('product',) 

admin.py 그러나이 모델로는 불가능합니다. 주문 당 하나의 수량 만 삽입 할 수 있습니다.

제품 및 수량이있는 중간 클래스의 ProductQuantity를 만든 다음이를 주문에 추가하는 방법을 생각했지만 제품을 만들 때 "즉시"ProductQuantity를 만들 수 있는지 여부는 알 수 없습니다. 주문.

나는 어떤 해결책도 생각할 수 없다. 아무도 도와 줄 수 있습니까?

답변

2

질문이있는 경우 확실하지 않습니다. 이것이 당신의 문제를 해결할 수 있을까요?

class Product(models.Model): 
    name = models.CharField(max_length=200) 

class Order(models.Model): 
    customer = models.ForeignKey(Customer) 

class OrderItem(models.Model): 
    order = models.ForeignKey(Order) 
    product = models.ManyToManyField(ProductQuantity) 
    quantity = models.IntegerField(default=0,validators=[MinValueValidator(1)]) 

편집 : 다음 주문을 만들 수 위의 모델로

:

Products: 
+----+--------+ 
| id | name | 
+----+--------+ 
| 1 | apple | 
| 2 | orange | 
| 3 | banana | 
+----+--------+ 

Order: 
+----+-------------+ 
| id | customer_id | 
+----+-------------+ 
| 1 |   112 | 
| 2 |   99 | 
+----+-------------+ 

OrderItem: 
+----+-------+---------+----------+ 
| id | order | product | quantity | 
+----+-------+---------+----------+ 
| 1 |  1 |  1 |  10 | 
| 2 |  1 |  2 |  20 | 
| 3 |  1 |  3 |  30 | 
| 4 |  2 |  1 |  5 | 
+----+-------+---------+----------+ 

두 개의 서로 다른 고객이 개 주문, 10 개 사과 하나, 20 개 오렌지가 있고 30 바나나. 그리고 5 개 사과 한 개만 가진 두 번째 주문.

+0

내가 달성하고 싶은 것은 내가 주문을 만들 때 주문에서 각 제품의 수량을 정의 할 수 있다는 것입니다. 위의 예에서 정의 된 수량은 주문 내에서 "제네릭"입니다. 예를 들어 나는 10 개의 사과, 20 개의 오렌지, 30 개의 바나나를 주문하고 싶습니다. – thodoris

+0

@ thodoris 그렇다면 귀하의 질문을 올바르게 이해했다고 생각합니다. 결과 SQL 테이블에서 그러한 순서가 어떻게 보이는지 예제를 추가했습니다. – tobltobs

+0

확인. 하지만 여전히 관리자를 사용하여 주문을 만들면 많은 단계를 거쳐야합니다. 먼저 주문을 작성한 다음 해당 주문에 대해 많은 OrderItem을 작성하십시오. 이는 매우 사용자 친화적이지 않습니다. 내가 생각했던 것은 OrderItem을 ManyToMany 필드로 Order에 추가하는 것이었다. 그러나이 인터페이스는 이미 작성된 OrderItem에 링크됩니다. 내가 원하는 것은 "즉시"OrderItem을 생성하는 것입니다. 제품은 이미 존재하지만 주문시 수량이 소개되어야합니다. – thodoris