2016-09-07 6 views
0

하나 이상의 항목을 주문할 수있는 마법사 (Django Formtools 사용)를 작성 중이며 선택한 각 항목에 원하는 수량을 지정할 수 있습니다.Django 양식 및 many2many.through 필드

나는 고전적인 카트 시스템을 피하고 구매를 가능한 한 간단하게하고 싶습니다. 내 탐색 제안은 단 3 페이지/단계로 구성됩니다.

  1. 첫 번째 페이지에는 사용 가능한 모든 항목이있는 양식이 표시됩니다. 해당 항목을 선택하고 방문자가 수량을 지정할 수 있습니다.
  2. 두 번째 페이지는 순서의 요약을하고 방문자는 세부 사항
  3. 마지막 페이지 내가 첫 번째 단계의 양식을 작성하는 문제에 봉착 내가 '

순서를 확인을 입력하라는 메시지가 내가 시도한 두 가지 옵션 사이의 중도를 찾을 수있는 도움을 찾고 있습니다.

class Item(models.Model):                             
    name = models.CharField(max_length=255) 
    price = models.DecimalField(max_digits=5, decimal_places=2) 

class Order(TransactionBase): 
    items = models.ManyToManyField(Item, through='OrderedItem') 

class OrderedItem(models.Model): 
    order = models.ForeignKey(Order) 
    item = models.ForeignKey(Item) 
    quantity = models.PositiveSmallIntegerField() 

가능한 모든 항목 목록에 내가 수있어 다음 ModelForm를 사용 :

내 장고 모델 (데모 단순화)과 같이

class OrderSelectionForm(forms.ModelForm): 
    class Meta: 
     model = Order                                
     fields = ('items',) 
     widgets = { 
      'items': forms.CheckboxSelectMultiple(), 
     } 

을하지만 '아무튼 수량을 지정하는 것을 허용하지 않습니다 ...

다음 코드를 사용하면 수량을 지정할 수있는 양식을 만들 수 있습니다 :

inlineformset_factory(Order, Order.items.through) 

그러나 사용 가능한 모든 항목의 목록을 단순하게 표시하는 대신 원하는 항목을 선택하기 위해 드롭 다운 목록과 함께 3 세트를 보여줍니다.

수량을 지정할 수 있도록 사용 가능한 모든 항목을 나열하는 양식을 얻으려면 두 가지 승인을 어떻게 결합 하시겠습니까?

고마워요.

답변

1

[편집] : 이전 오류가 복사 오류이므로 삭제되었습니다.

이 단계에서는 주문을 처리하지 않습니다. 을 제출하면을 생성하는 제품 카탈로그를 제공하고 있습니다. 따라서 항목을 양식의 기준으로 삼고 체크 박스와 수량에 항목에 연결될 수있는 이름 (항목의 기본 키 통합)을 입력 한 다음 제출시 주문을 생성하십시오.

+0

안녕하세요, 패키지에 대한 참조가 오타였습니다 (명확성을 위해 제 질문에서 Package로 이름을 바꾸 었습니다). – user1415785