私はdjango-filter
を使用しています。私はしかし、フォームフィールドをループしようとしていますが、standard django attributesは機能しません。唯一のものは{{ form.id_for_label }}
です。何か不足していますか?Django-Filter |フォームフィールドのルーピング
マイテンプレートコード:
<form action="" method="get">
{% for form in forms.form.product_colours %}
<div class="form-group">
<input type="checkbox" name="product_colours" id="{{ form.id_for_label }}" value="{{ form.value }}">
<label for="{{ form.id_for_label }}">{{ form.label }}</label>
</div>
{% endfor %}
<input type="submit" />
</form>
私は私のスタイリングに収まるようにその逆を動作するようにそれを必要とするだろう、一方、それは<input>
前<label>
をロードするので、私は単に{{ form }}
を使用したくない理由があります。私はスタイリングを変更する必要はありません。彼らはここでは、必要とされている場合には
は私の(簡体字)models
、FilterSet
と私のview
です:
モデル:
class ProductColour(models.Model):
name = models.CharField(max_length=255)
colour_hex = models.CharField(max_length=16, default="#FFF")
def __str__(self):
return self.name
class Product(Page):
# My product fields
product_colours = ParentalManyToManyField('products.ProductColour', blank=True)
フィルタセット:
class ProductFilter(django_filters.FilterSet):
product_colours = django_filters.ModelMultipleChoiceFilter(name="product_colours",
label="Product Colour",
widget=forms.CheckboxSelectMultiple,
queryset=ProductColour.objects.all(),
conjoined=False)
class Meta:
model = Product
fields = ['product_colours']
Vi EW:あなたはParentalManyToManyField
が何であるかを不思議に思っている場合には
def get_context(self, request):
context = super(Page, self).get_context(request)
all_products = ProductFilter(request.GET, queryset=Product.objects.live()).qs
forms = ProductFilter(request.GET, queryset=Product.objects.live())
paginator = Paginator(all_products, 9) # Show 9 resources per page
page = request.GET.get('page')
try:
products = paginator.page(page)
except PageNotAnInteger:
products = paginator.page(1)
except EmptyPage:
products = paginator.page(paginator.num_pages)
context['forms'] = forms
context['products'] = products
return context
、それはWagtail CMSクラスです。
{{ form.data.value }}
を指定する必要があります。これを最初に試してみてください。 {%、form.fields.instruments.choices%} {%endfor% } –@bhattravii OK私はOPを更新しました。 Nopeは残念なことに何もしなかった。 – DDiran
form.form.product_colours%}のフォームの{%の後にチェックインフォーム%%} {%endfor%}を入れて、そこに入っているフィールドを確認してください – Vaibhav