2017-10-23 24 views
1

申し訳ありませんが、私はちょうどそれを取得しません、docsここではかなり素晴らしい、私は実際に同じ例を使用して、私は2つのフィールドを持って、私は表示したいインライン、それはちょうど、django crispy形式のインライン形式

私のフォームを動作しないのです。

from django import forms 

from crispy_forms.helper import FormHelper 
from crispy_forms import layout, bootstrap 
from crispy_forms.bootstrap import InlineField, FormActions, StrictButton 
from crispy_forms.layout import Layout 

from ..models import EmployeeModel 


class EmployeeCreateForm(forms.ModelForm): 
    """ 
    TODO: Extend CompanyModel into Form 
    :returns: TODO 
    """ 
    def __init__(self, *args, **kwargs): 
     super(EmployeeCreateForm, self).__init__(*args, **kwargs) 

     self.helper = FormHelper() 
     self.helper.form_tag = False 
     self.helper.method = "POST" 
     self.helper.form_class = 'form-inline' 
     self.helper.field_template = 'bootstrap3/layout/inline_field.html' 
     self.helper.form_action = "company:create-employee" 

     self.helper.layout = Layout(
      'first_name', 
      'last_name', 
      StrictButton('Add', css_class='btn-default'), 
     ) 

    class Meta: 
     model = EmployeeModel 
     fields = ["first_name", "last_name"] 

と私のテンプレート:

{% extends "base.html" %} 
{% load i18n static %} 

{% load crispy_forms_tags %} 

{% block content %} 
<nav class="navbar fixed-top navbar-light bg-faded"> 
    <ul class="nav justify-content-center"> 
    <li class="nav-item"> 
     <a class="nav-link" href="{% url 'why' %}">WHY SCREEN?</a> 
    </li> 
    <li class="nav-item"> 
     <a class="nav-link" href="#">BLOG</a> 
    </li> 
    <li class="nav-item"> 
     <a class="nav-link" href="{% url 'faq' %}">FAQ</a> 
    </li> 
    <li class="nav-item"> 
     <a class="nav-link" href="{% url 'about' %}">ABOUT</a> 
    </li> 
    </ul> 
</nav> 

<div class="container"> 
    <div class="row"> 
    <p style="padding:60px;"></p> 
    </div> 
</div> 

<div class="container"> 
    <div class="row"> 
    <div class="col-sm-4 col-sm-offset-2"> 
     <form action="{% url 'company:create-employee' %}" method="post"> 
     {% csrf_token %} 
     {% crispy form %} 
     </form> 
    </div> 
    </div> 
</div> 

しかし、まだフォームが水平にレンダリングされると、それは私が「どのようなので、インラインではありません私はミシここで誰かが私を説明することができます。

+0

{%crispy form form.helper%}は動作します – ytsejam

+0

私はそれを持っています、私は今それに答えるでしょうが、うまくいくかもしれませんが、私は '' Div'クラスを '' crispy_forms.bootstrap import Div' – PetarP

+0

FormHelperアトリビュートヘルパーに名前を付けた場合、次の操作だけが必要になります:{%crispy form%} – ytsejam

答えて

1

最後に、私はそれはまた、私はDiv'sからcss_classを追加しましたし、それが完璧に動作し、私はDivcss_class='row'使用しました。この

from django import forms 
from django.forms.models import formset_factory 

from crispy_forms.helper import FormHelper 
from crispy_forms import layout, bootstrap 
from crispy_forms.bootstrap import InlineField, FormActions, StrictButton, Div 
from crispy_forms.layout import Layout 
from crispy_forms import bootstrap, layout 

from company.models.employee_model import EmployeeModel 


class EmployeeCreateForm(forms.ModelForm): 
    """ 
    TODO: Extend CompanyModel into Form 
    :returns: TODO 
    """ 
    def __init__(self, *args, **kwargs): 
     super(EmployeeCreateForm, self).__init__(*args, **kwargs) 

     self.helper = FormHelper() 
     self.helper.form_tag = False 
     self.helper.method = "POST" 
     self.helper.form_class = 'form-inline' 
     self.helper.field_template = 'bootstrap3/layout/inline_field.html' 
     self.helper.form_action = "company:create-employee" 

     self.helper.layout = Layout(
     Div(
      Div('first_name', css_class="col-sm-2"), 
      Div('last_name', css_class="col-sm-2"), 
      Div('middle_initial', css_class="col-sm-2"), 
      Div('social_security_number', css_class="col-sm-2"), 
      bootstrap.FormActions(
       layout.Submit('submit', 'Add', css_class='btn btn-primary')), 
      css_class='row', 
     ) 
    ) 

    class Meta: 
     model = EmployeeModel 
     fields = ["first_name", "last_name", "middle_initial", "social_security_number"] 

ように書き、それを持っています。フォームはインラインで表示されます。