tutorial - django templates free
django formas crujientes formas en línea (2)
Estoy tratando de adoptar formas crujientes y bootstrap y usar la mayor cantidad posible de su funcionalidad en lugar de inventar algo una y otra vez.
¿Hay alguna manera de tener la funcionalidad de formularios en línea con curruscantes formularios / bootstrap, como lo han hecho las formas django-admin?
Aquí hay un ejemplo:
class NewProjectForm(forms.Form):
name = forms.CharField(required=True, label=_(u''Название проекта''), widget=forms.TextInput(attrs={''class'':''input-block-level''}))
group = forms.ModelChoiceField(required=False, queryset=Group.objects.all(), label=_(u''Группа проектов''), widget=forms.Select(attrs={''class'':''input-block-level''}))
description = forms.CharField(required=False, label=_(u''Описание проекта''), widget=forms.Textarea(attrs={''class'':''input-block-level''}))
class Meta:
model = Project
fields = (''name'',''description'',''group'')
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.form_class = ''horizontal-form''
self.helper.form_action = ''submit_new_project''
self.helper.layout = Layout(
Field(''name'', css_class=''input-block-level''),
Field(''group'', css_class=''input-block-level''),
Field(''description'',css_class=''input-block-level''),
)
self.helper.add_input(Submit(''submit'',_(u''Создать проект'')))
self.helper.add_input(Submit(''cancel'',_(u''Я передумал'')))
super(NewProjectForm, self).__init__(*args, **kwargs)
mostrará una forma decente:
¿Cómo hago para agregar un formulario que básicamente represente este modelo?
class Link(models.Model):
name = models.CharField(max_length=255, blank=False, null=False, verbose_name=_(u''Название''))
url = models.URLField(blank=False, null=False, verbose_name=_(u''Ссылка''))
project = models.ForeignKey(''Project'')
Entonces habrá un proyecto y enlaces de nombre / URL y una forma de agregar muchos, como lo mismo se hace en django-admin, donde puedes agregar ''filas'' adicionales con datos relacionados con tu modelo principal. En la siguiente imagen, puede completar datos para el objeto ''Pregunta'' y debajo puede agregar datos para objetos QuestionOption: puede hacer clic en el icono ''+'' para agregar tantas QuestionOptions como desee.
No busco la manera de obtener los formularios generados automáticamente a partir de los modelos (eso es bueno, pero no el más importante). ¿Hay alguna forma de construir un formulario que le permita agregar ''filas'' de datos como lo hace django-admin? ?
Si usa vistas basadas en clase, puede usar django-extra-views .
Los formularios en línea a los que se refiere son conocidos en Django como Formsets. Si desea saber más sobre los conjuntos de formularios, puede encontrarlos en la documentación de formularios de Django .
Crispy admite la representación de formularios en línea, como se describe en la sección ''Rendering Formsets''
Tenga en cuenta que los conjuntos de formularios de forma predeterminada muestran 3 formularios adicionales en línea, lo que le permite agregar tres objetos más. Después de guardar, nuevamente obtienes tres formularios adicionales en línea para agregar aún más.
Si desea un botón ''agregar más'' como en Django Admin, necesitará usar algo de Javascript para agregar dinámicamente esas filas.