django-crispy-forms - Вводя поля в одном сдержись

У меня есть следующий формуляр:

class RehabilitationSessionForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        # user = kwargs.pop('user', None)
        super(RehabilitationSessionForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        self.helper.add_input(Submit('submit', u'Guardar'))

    class Meta:
        model = RehabilitationSession

        widgets = {
            'pain_extremity':forms.RadioSelect,
            'upper_extremity':forms.RadioSelect,

        }

        fields = ['patient', 'medical', 'therapist', 'date_session_begin',
                  'upper_extremity', 'pain_extremity','movement_up','movement_down',
                  'movement_left','movement_right',
                  'games','game_levels','iterations','game_observations','patient_behavior',
                  'observations','period','date_session_end', ]

Желание мочь renderizar все эти поля во мне сдержись html, отдельной формы, а именно помещать каждое поле в html divs специфические средства.

Я работаю с django-crispy-forms и bootstrap-3

Пока, я renderizando поля отдельной формы, используя этикетку {{ form. }} а именно renderizando поля ручной формы этой формы:

   User Avatar
{{ form.non_field_errors }}
    {{ form.patient.errors }}
  • Paciente:  {{ form.patient }}
  • Terapeuta:  {{ form.therapist }}
  • Médico:  {{ form.medical }}
. . And so sucessively more divs and fields

Но это способствует тому, чтобы я потерял эффект или стили bootstrap, благодаря тому, что я не использую класс RehabilitationSessionForm что, где создается формуляр используя какие-то признаки crispy-forms

Результат:

Мой формуляр развернут без эффектов css и js bootstrap-3

introducir la descripción de la imagen aquí

Как я могу renderizar мой формуляр используя django-crispy-forms?

ОБНОВЛЕНИЕ

Если у меня есть это в, сдержись базовый рисунок

   User Avatar
  • Paciente:  Valentina Sepúlveda
  • D.I:  1037548297

Sesión N°

1

  • Fecha de inicio:  12/01/1991 - 17:34 hs
  • Terapeuta:  Bernardo
  • Médico:  Christian

Как он смог бы renderizar эти поля с метода __init__ в forms.py?

Я это попробовал:

class RehabilitationSessionForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(RehabilitationSessionForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        #self.helper.add_input(Submit('submit', u'Guardar'))
        self.helper.layout=Layout(
            Div(
                FormActions(
                    Submit('save', 'Save changes'),
                    css_class='box-body btn btn-success btn-sm pull-right fa fa-pencil',

                ),
                Div('patient', css_class='col-md-3 col-xs-12 col-sm-6'),
                Div('therapist', css_class='col-md-4 col-xs-12 col-sm-6'),
                Div('medical', css_class='col-md-4 col-xs-12 col-sm-6'),
                css_class='row',

            )
        )

И во мне сдержись реально, куда прибывают данные, или где я крашу формуляр с {% crispy form %}, я схватил эту

{% crispy form %}
#
   User Avatar
{{ form.non_field_errors }} #
    {{ form.patient.errors }}
  • Paciente: 
  • D.I:  {{ sessionedit.patient.identity_document }}
#

Sesión N°

{{ sessionedit.id }}

#
  • Fecha de inicio: 
  • Terapeuta: 
  • Médico: 
# #
#

В общем я остался renderizando, но мне не удается поместить хорошо мои css's в divs для полей. Пока мой формуляр остается таким, в этом url возможно быть видно, что дезорганизованы поля, но с ответом, данным из-за @German-Alzate-Martinez уже я renderizando поля моего формуляра используя django-crispy-forms и посылая их с метода __init__ во мне forms.py.

Только, который я не дал с интерпретацией как renderizar каждая вещь.

Любая помощь я благодарен за это

1
задан 13.04.2017, 16:00
1 ответ

В ней documentaciГіn Джанго-криспи-формс он говорит тебе, что ты можешь помогать для renderizar твоим полям формуляра с init из твоего формуляра, следующей формы:

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

class RehabilitationSessionForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        # user = kwargs.pop('user', None)
        super(RehabilitationSessionForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        self.helper.add_layout = Layout(
            Div(
                Div('patient', css_class='col-md-4'),
                Div('therapist', css_class='col-md-4'),
                Div('medical', css_class='col-md-4'),
                Div(
                    StrictButton('Submit', css_class='btn btn-primary', type='submit'),
                    css_class='col-md-2'
                )
                css_class='row'
            )
        )     
...

следует довести до сведения, что это демонстративный пример, уже классы css ты размещаешь их, как он тебе нравится больше для того, чтобы каждое кружево, ты также мог бы опускать последний div strictbutton, и aГ±adir один FormActions(Submit('aceptar', 'Aceptar')), потом в тебе сдержись, только ты должен звонить таково...

...
{% load crispy_forms_tags %}

<!--Ubicas tu formulario, dentro de cualquier contenedor de acuerdo a tu diseño-->
{% crispy form %} {% comment %}Solo llamas el formulario asi, y el renderiza con los divs y las clases que usaste {% endcomment %}
...

Надеялся помочь тебе, любой вопрос, не сомневайся в том, чтобы комментировать

0
ответ дан 24.11.2019, 12:18
  • 1
    С твоим ответом я смог renderizar поля с forms.py в __init__, только, который я не осознаю, как помещать css' s в divs, и что больше helpers использовать. Я написал actualizació n , если у тебя внезапно есть возможность увидеть ее porfa, я тебе благодарен – bgarcial 07.12.2016, 01:47
  • 2
    @bgarcial css в divs ты помещаешь их в признак css_class из каждого Div (Объект CrispyForms), должен иметь в виду, что также как и ты организовываешь divs в твоем методе init , так organizará n в сдержись, также вспомни, что уже это не вопрос Джанго так, если бы не css и bootstrap, совет состоял в том, чтобы помещать весь формуляр внутри контейнера, и отделять из-за divs с классом ' row' всякий раз когда классы капуста - md - погружают 12 – German Alzate 07.12.2016, 15:31
  • 3
    ¿ Всякий раз когда классы капуста - md - погружают 12? а именно col-md-1-2-3 и я схватил последовательно? Я не понимаю эту часть – bgarcial 07.12.2016, 16:01
  • 4
    идеальное состоит в том, чтобы внутри одного div с классом row они не преодолели 12 колонн, потому что все переливается через край, а именно, у тебя не может быть более 3 div с классом col-md-4, потому что каждая из этих это 4 колонны, 4 x 3 = 12, если ты добавляешь другой div с таким классом, его было col-md-1 уже их было бы 13, что способствует тому, чтобы они перелились через край... – German Alzate 07.12.2016, 18:36