2016-09-28 2 views
1

안녕하세요, 내 나쁜 영어로는 유감스럽게 생각합니다. 대신 장고 모델의 FK 관계에서 숫자 입력을 사용하여 양식을 표시하려고합니다.하지만 그럴 수는 없습니다.Django CreateView - select 대신 정수와 같은 관련 필드 (FK)를 표시하는 방법은 무엇입니까?

것은 제품의 ID를 입력란에 수동으로 작성해야하지만 django는 자동으로 모든 제품과 함께 선택 양식을 만듭니다!

이 내가

class PurchaseForm(forms.ModelForm): 
    class Meta: 
     model = Purchase 
     fields = [ 
      'date', 
      'supplier', 
      'warehouse', 
     ] 
     widgets = { 
      'date': forms.DateInput(attrs={ 
        'type': 'date', 
       }), 
     } 


class PurchaseItemForm(forms.ModelForm): 
    class Meta: 
     model = PurchaseItem 
     fields = [ 
      'product', 
      'quantity', 
      'net_purchase_price', 
      'sell_price', 
     ] 

     widgets = { 
      'product': forms.NumberInput(), 
     } 


PurchaseFormSet = inlineformset_factory(
     Purchase, 
     PurchaseItem, 
     fields='__all__', 
     extra = 10, 
    ) 

forms.py

에 무엇을 가지고이 내 시야

class PruchaseCreateView(CreateView): 
    template_name = 'purchases/create_purchase.html' 
    form_class = PurchaseForm 

    def get_context_data(self, **kwargs): 
     context = super(PruchaseCreateView, self).get_context_data(**kwargs) 
     if self.request.POST: 
      context['formset'] = PurchaseFormSet(self.request.POST) 
     else: 
      context['formset'] = PurchaseFormSet() 
     return context 

    def form_valid(self, form): 
     context = self.get_context_data() 
     formset = context['formset'] 
     if formset.is_valid(): 
      self.object = form.save() 
      formset.instance = self.object 
      formset.save() 
      return redirect(self.object.get_absolute_url()) 
     else: 
      return self.render_to_response(self.get_context_data(form=form)) 

내가 위젯 NumberInput하지만 아무것도 시도입니다! 어떤 생각?

답변

3

당신은 당신이 inlineformset_factory를 호출 할 때 사용자 지정 양식을 포함해야합니다

PurchaseFormSet = inlineformset_factory(
    Purchase, 
    PurchaseItem, 
    form=PurchaseItemForm 
    fields='__all__', 
    extra = 10, 
) 
+0

대단히 감사합니다! 완벽하게 작동합니다! – marcosgue