私はクリスピーフォームとブートストラップを採用しようとしており、繰り返し何かを何度も発明するのではなく、可能な限り多くの機能を使用しています。django crispy-forms inline forms
django-adminフォームのように、クリスピーフォーム/ブートストラップでインラインフォーム機能を使用する方法はありますか?ここで
は一例です:
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)
それがまともなフォームが表示されます。
は、どのように私は基本的にこのモデルを表し、フォームを追加して行くん:
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')
を
したがって、プロジェクトと名前/ URLのリンクと広告の方法があります多くの場合、django-adminで同じことが行われます。ここでは、メインモデルに関連するデータとともに余分な「行」を追加できます。下のスクリーンショットでは、QuestionOptionオブジェクトのデータを追加できる 'Question'オブジェクトのデータを記入することができます。必要な数のQuestionOptionsを追加するには '+'アイコンをクリックできます。
モデルから自動生成されたフォームを取得する方法を探しているわけではありません。いいですが、最も重要ではありません。データのようなデータの行を追加できるフォームを作成する方法はありますか? django-adminはどうしますか?
この質問は動的な「追加」ボタンについて詳しく説明しています:http://stackoverflow.com/questions/501719/dynamically-adding-a-form-to-a-django-formset-with-ajax – publysher