Django ModelForm filtering ForeingKey

258 Views Asked by At

I have this:

In models.py

class Category(models.Model):
    Name = models.CharField(max_length=50)
    Description = models.CharField(max_length=150)

    def __unicode__(self):
        return self.Description

class Subcategory(models.Model):
    Category = models.ForeignKey(Category)
    Name = models.CharField(max_length=50)
    Description = models.CharField(max_length=150)

    def __unicode__(self):
        return self.Description

class Smartgrid(models.Model):
    Category = models.ForeignKey(Category)
    Subcategory = models.ForeignKey(Subcategory)
    Descriptor = models.CharField(max_length=150)

    def __unicode__(self):
        return self.Descriptor

In forms.py:

class SmartgridForm(forms.ModelForm):
    class Meta:
        model = Smartgrid

In views.py

def new_point(request):
    if request.method=='POST':
        form = SmartgridForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/gis')
    else:
        form = SmartgridForm()

    return render_to_response('SmartgridForm.html', {'form':form}, context_instance=RequestContext(request))

The question:

I want that once the user choose the category in SmartgridForm.html, the Subcategory field only display these subcategory with category = category selected

Thanks !!!!

JDC.

1

There are 1 best solutions below

1
On BEST ANSWER

You can use this solution if you don't want to use another app: Django/jQuery Cascading Select Boxes?

But for me, it's better to use Dajax http://www.dajaxproject.com/forms/