나는 의도 한대로 작동하는 django-filter
을 사용하고 있습니다. 그러나 양식 필드를 반복하려고하지만 standard django attributes이 작동하지 않습니다. 유일한 것은 {{ form.id_for_label }}
입니다. 내가 놓친 게 있니?장고 필터 | 양식 필드 위로 반복하기
내 템플릿 코드 :
<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>
단순히 내 스타일에 맞게 viceversa에 일을하는 데 필요한 것입니다 반면에 그것은 <input>
전에 <label>
를로드하기 때문에 {{ form }}
는 사용하지 않으려는 이유. 나는 스타일을 바꾸지 않는 것을 선호한다.
모델 :
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)
FilterSet :
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']
그들이 필요한 경우
, 여기 내 (간체) models
, FilterSet
내 view
있습니다 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