First of all, I recommend that you read chapter 17 of Django Book (if you haven't already) http://www.djangobook.com/en/1.0/chapter17/
Moving on, you have to create a view, as we are working on Django's admin, then i recommend that you create one like project/app/ admin_views.py with something similar to this code: from indica.geral.models import * from django.http import HttpResponse from django.template import RequestContext from django.utils import simplejson from django.contrib.admin.views.decorators import staff_member_required def country_getStates(request): id = request.GET.get('id','') result = [u.__dict__ for u in State.objects.filter(country=id)] return HttpResponse(simplejson.dumps(result), mimetype='application/ javascript') country_getStates = staff_member_required(country_getStates) Then, you have to customize the change_form.html template with the JS call, something like this (as you can see, i am using JQuery): {% extends "admin/change_form.html" %} {% block extrahead %} <script src="http://SERVERNAME/js/jquery-1.2.3.min.js" type="text/ javascript"></script> <script type="text/javascript" charset="utf-8"> $(function(){ $("select#id_country").change(function(){ $.getJSON("/admin/bd1/country/getStates/",{id: $(this).val()}, function(j){ var options = '<option value="">---------</option>'; for (var i = 0; i < j.length; i++) { options += '<option value="' + j[i].id + '">' + j[i].state + '</option>'; } $("select#id_state").html(options); }) }) }) </script> {% endblock %} Create a JS file and put this second script tag in it, that way will be easier to maintain your template. At urls.py you need to add a pattern to reach the view: (r'^admin/bd1/country/getStates/$', 'project.app.admin_views.country_getStates'), This is the classic example of a country -> state interaction, the same for your category -> subcategory need. []s, Diego Ucha On 5 maio, 03:49, martyn <[EMAIL PROTECTED]> wrote: > Thank you, it's just what I wanted, but do I have to write a new > template (admin/model_name/etc...) ? > Or can I define this directly in my model (onchange actions...) ? > > I have the django Book (definitive guide to django) but I can't find > this. > > On 4 mai, 02:26, Diego Ucha <[EMAIL PROTECTED]> wrote: > > > HelloMartyn, > > > The main interaction, that i see you need is: > > (On Product form) User select Category -> Subcategory field is auto- > > filled -> User select a subcategory based on the category selected. > > > Then you will have to use some JS Library (I prefer JQuery, besides > > there are some discussion about those libs on the list). > > > For filling this subcategory field, in terms of data transmission, i > > use JSon, because JQuery has a fine JSon parser, in few lines it's all > > done. > > > []s, > > Diego Ucha > > > On May 2, 6:05 am,martyn<[EMAIL PROTECTED]> wrote: > > > > Hi, > > > > I've created a simple product model : > > > > class Produit(models.Model): > > > nom = models.CharField(maxlength=200) > > > slug = models.SlugField(prepopulate_from=('nom',)) > > > description = models.TextField(blank=True) > > > published = models.BooleanField(default=True) > > > prix_ht = models.DecimalField(max_digits=30, decimal_places=2) > > > famille = models.ForeignKey('Famille') > > > sous_categorie = models.ForeignKey('SousCategorie') > > > clic > > > > class Admin: > > > pass > > > > I've got also Category and SubCategory : > > > > class Categorie(models.Model): > > > nom = models.CharField(maxlength=200) > > > slug = models.SlugField(prepopulate_from=('nom',)) > > > class Admin: > > > pass > > > > def __str__(self): > > > return self.nom > > > > class SousCategorie(models.Model): > > > nom = models.CharField(maxlength=200) > > > slug = models.SlugField(prepopulate_from=('nom',)) > > > categorie = models.ForeignKey('Categorie') > > > class Admin: > > > pass > > > > def __str__(self): > > > return self.nom > > > > Is there a way in django admin, in the Product form, to select the > > > category, then the subcategories of this category only are shown in > > > the select list. > > > > Thanks a lot --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---