0

こんにちはStackoverflowの人々、

シャキッとしたアプリでフォームセットをスタイリングしたいのですが、少し悲しみがあります。

非常に単純なモデルを4回提示する必要があります。

class ItemPicture(models.Model):
    item = models.ForeignKey('Item')
    picture = ThumbnailerImageField(_('Image'),
            upload_to='pictures/', null=True, blank=True,)

フォームクラスも簡単です。

class ItemPictureForm(forms.ModelForm):
    class Meta:
        model = ItemPicture
        fields = ('picture',)

    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
                Fieldset(_('Add pictures'),'picture', ),
                ButtonHolder(
                    Submit('save', _('Add'), css_class='btn btn-primary '),
                    Reset('reset', _('Cancel'), css_class='btn')))
        super(ItemPictureForm, self).__init__(*args, **kwargs)

私のviews.pyで、フォームセットを生成します。

class ItemUploadPictures(FormView):
    ItemPictureFormSet = formset_factory(ItemPictureForm, extra=4)
    form_class = ItemPictureFormSet
    template_name = 'item_upload_pictures.html' 
    success_url = reverse_lazy('dashboard') 

私の問題は、クリスピーがテンプレートに期待{% crispy formset formset.form.helper %}していることですが、渡された変数はであるようですform{% crispy form %}動作しますが、ヘルパー属性は表示されません。フォームセット情報全体をテンプレートに渡すにはどうすればよいですか?

ご提案ありがとうございます。

4

3 に答える 3

3

やってみました

{% crispy formset form.form.helper %}
于 2012-08-23T11:29:01.983 に答える
2

forms.py

class ItemPictureForm(forms.ModelForm):
    class Meta:
        model = ItemPicture
        fields = ('picture',)

    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
                Fieldset(_('Add pictures'),'picture', ),
        # These need to be removed because they cant be prevented from duplicating
        #       ButtonHolder(
        #           Submit('save', _('Add'), css_class='btn btn-primary '),
        #           Reset('reset', _('Cancel'), css_class='btn')
        ))
        super(ItemPictureForm, self).__init__(*args, **kwargs)

manage_pictures.html

{% load crispy_forms_tags i18n %}
<form action="" method="post">
    {% csrf_token %}
    {% crispy formset formset.form.helper %}
    <div class="form-actions">
        <input type="submit" name="save" value="{% trans "Add" %}" class="btn btn-primary" id="submit-id-save"> 
        <input type="button" name="reset" value="{% trans "Cancel" %}" class="btn" id="button-id-cancel">
    </div>
</form>
{% crispy formset formset.form.helper %}
于 2013-07-27T03:11:43.993 に答える
0

たぶん、このライブラリはあなたのニーズに応えます:https ://github.com/runekaagaard/django-crispy-forms-fancy-formsets

于 2012-08-23T13:27:51.880 に答える