2017-07-08 31 views
0

顯示裏面的DetailView其他形式我在views.py在Django

class part_detail_view(DetailView): 
    model = part_list 
    context_object_name = 'part_detail' 
    template_name = 'part_detail.html' 

    def get_context_data(self, **kwargs): 
     context = super(part_detail_view, self).get_context_data(**kwargs) 
     context['my_list'] = populate_nav_bar() 
     return context 

的「部分」的詳細視圖,但是這裏面的網址我也想顯示的股票模型,使另一種形式的「CreateView的」從同一頁面我可以顯示錶格以添加零件庫存並添加庫存。這很容易在基於功能的視圖中完成,但我不知道如何在基於類的視圖中執行此操作。

回答

1

您必須forms.py明確寫StockForm()

# forms.py 
class StockForm(forms.ModelForm): 
    class Meta: 
     model = Stock # Your Stock model 
     fields = '__all__' 

然後,只需注入在get_context_data()形式上下文:

# views.py 
class PartDetailView(DetailView): 
    ... 

    def get_context_data(self, **kwargs): 
     ... 
     context['create_stock_form'] = StockForm() # Your stock form 
     return context 

然後插入表單模板:

... 
<form method="post" action="{% url 'create_stock_url' %}"> 
    {{ create_stock_form }} 
    <button type="submit">Submit</button> 
</form> 
... 

其中create_stock_url是您的CreateV的網址創建股票。

+0

不會創建視圖從模型創建自己的窗體?我沒有在創建視圖中傳遞任何表單 –

+0

在CreateView中,Django隱式地將默認表單注入爲'context ['form']'。但不適用於DetailView,因此您必須明確地寫入表單並將其添加到上下文中,請參閱更新後的答案。 –

+0

在ID字段中,它顯示所有的父元素如何預填充到一個ID並隱藏它? –