Hello I am working on adding a drop down selection to my filters so far I am not having any luck. I recently changed my views.py to use a class instead of a def for this. Now when I use filter.form it shows every field in my models. It should only show the following fields circuitid, bandwidth, region, carrier, status, segmentname, and mrcnew and each should be a dynamically generated drop down list from the respective model field only displaying distinct values. I tried creating my own form with a function that would return these values using choicefield but I can't get this form to come into the template. A point in the right direction would be much appreciated!
class Circuitinfotable(models.Model): id1 = models.IntegerField(blank=True, null=True) pid = models.CharField(max_length=255, blank=True, null=True) circuitid = models.CharField(primary_key=True,max_length=255, blank=False, null=False) bandwidth = models.CharField(max_length=255, blank=True, null=True) region = models.CharField(max_length=255, blank=True, null=True) bw = models.IntegerField(blank=True, null=True) tableaupathname = models.CharField(max_length=255, blank=True, null=True) handoffalocaddress = models.CharField(max_length=255, blank=True, null=True) handoffaloccity = models.CharField(max_length=255, blank=True, null=True) handoffalocst = models.CharField(max_length=255, blank=True, null=True) alocationaddress = models.CharField(max_length=255, blank=True, null=True) alocationcity = models.CharField(max_length=255, blank=True, null=True) alocst = models.CharField(max_length=255, blank=True, null=True) handoffzlocaddress = models.CharField(max_length=255, blank=True, null=True) carrier = models.CharField(max_length=255, blank=True, null=True) handoffzloccity = models.CharField(max_length=255, blank=True, null=True) handoffzlocst = models.CharField(max_length=255, blank=True, null=True) zlocationaddress = models.CharField(max_length=255, blank=True, null=True) zlocationcity = models.CharField(max_length=255, blank=True, null=True) zlocst = models.CharField(max_length=255, blank=True, null=True) segmentid = models.CharField(max_length=255, blank=True, null=True) segmenttype = models.CharField(max_length=255, blank=True, null=True) status = models.CharField(max_length=255, blank=True, null=True) purpose = models.CharField(max_length=255, blank=True, null=True) installdate = models.DateField(blank=True, null=True) termdate = models.DateField(blank=True, null=True) termlengthmos = models.IntegerField(blank=True, null=True) legacy = models.CharField(max_length=255, blank=True, null=True) installciopsticket = models.CharField(max_length=255, blank=True, null=True) retermciopsticket = models.CharField(max_length=255, blank=True, null=True) discociopsticket = models.CharField(max_length=255, blank=True, null=True) notes = models.CharField(max_length=255, blank=True, null=True) kma = models.CharField(max_length=255, blank=True, null=True) group = models.IntegerField(blank=True, null=True) cktidkey = models.IntegerField(blank=True, null=True) visiolink = models.CharField(max_length=255, blank=True, null=True) latestjiraticket = models.CharField(max_length=255, blank=True, null=True) disconnectdate = models.DateField(blank=True, null=True) segmentname = models.CharField(max_length=255, blank=True, null=True) mrcnew = models.TextField(blank=True, null=True) # This field type is a guess. termyrs = models.IntegerField(blank=True, null=True) monthbudget = models.IntegerField(blank=True, null=True) monthdisco = models.IntegerField(blank=True, null=True) mrcold = models.TextField(blank=True, null=True) # This field type is a guess. kmz = models.CharField(max_length=255, blank=True, null=True) def __str__(self): return self class Meta: managed = False db_table = 'circuitinfotable' My filter.py code is below: from .models import Circuitinfotable from .forms import CircuitForm import django_filters class CircuitInfoFilter(django_filters.FilterSet.form): class Meta: model=Circuitinfotable #fields = ['circuitid', 'bandwidth', 'region', 'carrier', 'status', 'segmentname', 'mrcnew'] form=CircuitForm My forms.py is below: from django import forms from .models import Circuitinfotable def getList(item_list, keyValue): valueList=[] for each in item_list: valueList.append(each[keyValue]) return valueList class CircuitForm(forms.Form): class Meta: model = Circuitinfotable fields = ('circuitid', 'bandwidth', 'region', 'carrier', 'status', 'segmentname', 'mrcnew') region_dict=Circuitinfotable.objects.values('region').distinct('region') def __init__(self, *args, **kwargs): super(CircuitForm, self).__init__(*args, **kwargs) self.fields['region'].queryset = forms.ChoiceField(getList(region_dict, 'region')) self.fields['bandwidth'].queryset = Bandwidth.objects.none() self.fields['circuitid'].queryset = Circuitid.objects.none() self.fields['carrier'].queryset = Carrier.objects.none() self.fields['status'].queryset = Status.objects.none() self.fields['segmentname'].queryset = Segmentname.objects.none() self.fields['mrcnew'].queryset = Mrcnew.objects.none() my views.py is below: Enter code here...from django.shortcuts import render from django.http import HttpResponse from django.views.generic import TemplateView, ListView from django.http import HttpResponseRedirect from django_filters.views import FilterView from .models import Circuitinfotable from .filters import CircuitInfoFilter from .forms import CircuitForm import re # Create your views here. class search(FilterView): model = Circuitinfotable filter_class = CircuitInfoFilter form_class = CircuitForm def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) return context and my template looks like this: Enter code here...<html> <head> <meta charset="UTF-8"> <title>Circuits</title> <style> h1 { color:blue; } h4 { color:red; } .tabledata { background: #395870; color:#fff; } .tablerow:nth-child(even) { background-color: #f2f2f2; } .form{ width:100%; } .field { background: #white; float: left; margin: 1%; width: 200; } </style> {% extends 'ciopsNavbar.html' %} {% block content %} <div style="position: relative; top: 60px;"> <form method="get"> {{ filter.form.as_table }} <button type="submit">Search</button> <a href="/searchlit/customsearch/"> <input type="button" value="Clear" /></a> </form> </div> <body> <p>{{ filter.qs.count }} circuits returned</p> <div> <table style="width:100%"> <thead class="tabledata"> <tr> <th>View</th> <th>CircuitID</th> <th>Bandwidth</th> <th>Region</th> <th>Carrier</th> <th>Status</th> <th>Segmentname</th> <th>MRC</th> </tr> </thead> <tbody> {% for circuit in object_list %} <tr class="tablerow"> <td class="actions"> <a href="/viewLit/{{ circuit.circuitid }}" target="_blank" class="view-item" title="View">View</a> </td> <td>{{ circuit.circuitid }}</td> <td>{{ circuit.bandwidth }}</td> <td>{{ circuit.region }}</td> <td>{{ circuit.carrier }}</td> <td>{{ circuit.status }}</td> <td>{{ circuit.segmentname }}</td> <td>{{ circuit.mrcnew }}</td> </tr> {% endfor %} </tbody> </table> </div> </body> </div> {% endblock %} </html> -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/5e29d994-473f-496a-b2c3-a7e93b47bb3a%40googlegroups.com.