2010-09-24 6 views
2

je application Django avec ligne en place:Comment utiliser JS personnalisé avec ligne Django

class Account(models.Model): 
    ContractNum = models.PositiveIntegerField(unique=True, blank=True, null=True) 
    LastName = models.CharField(max_length=50,) 
    FirstName = models.CharField(max_length=50,) 

class Subscription(models.Model): 
    Account = models.ForeignKey(Account, related_name='AccountLine') 
    IpAddress = models.IPAddressField(unique=True, default=getFreeIP) 
    MacAddress = MACAddressField() 
    Switch = models.ForeignKey(Switch, related_name='SwitchAccounts') 
    Port = models.ForeignKey(Port) 

Dans l'interface d'administration en ligne pour J'ai la classe compte. En conséquence, j'ai HTML généré comme ceci:

   <td class="Switch"> 
        <select name="AccountLine-0-Switch" id="id_AccountLine-0-Switch"> 
<option value="">---------</option> 
<option value="1">ds34/33-2</option> 
<option value="8" selected="selected">ds34-1</option> 
</select><a href="/admin/cmdb/switch/add/" class="add-another" id="add_id_AccountLine-0-Switch" onclick="return showAddAnotherPopup(this);"> <img src="/admin_media/img/admin/icon_addlink.gif" width="10" height="10" alt="Add one more"/></a>  
       </td> 
       <td class="Port"> 
        <select name="AccountLine-0-Port" id="id_AccountLine-0-Port"> 
<option value="">---------</option> 
<option value="1">3com34:1</option> 
<option value="161" selected="selected">ds34-1:1</option> 
</select><a href="/admin/cmdb/port/add/" class="add-another" id="add_id_AccountLine-0-Port" onclick="return showAddAnotherPopup(this);"> <img src="/admin_media/img/admin/icon_addlink.gif" width="10" height="10" alt="Add one more"/></a> 

Je ne suis pas vraiment bon sur JavaScript, pourriez-vous s'il vous plaît me aider à préremplir option zone Port, selon choosed Switch-case d'option? Ce que j'ai déjà fait: Créé une requête JSON, et vue, qui renvoie des ports pour swicth spécifique ajouter une rangée de plus? Merci pour toute idée et aide à l'avance.

Répondre

0

Je l'ai fait que vous avez recommandé, dans ce poste, et cela fonctionne très bien, voici JavaScript que j'ai fait:

$(document).ready(function() { 
     $(".module").delegate("[id$=-Switch]", "change", function() { 
      var row = $(this).attr("id").split('id_AccountLine-')[1].split("-Switch")[0]; 
      var switch_id = $(this).val(); 
     var json_url = "/admin/cmdb/switch_ports/"+switch_id+"/" 
      $("#id_AccountLine-"+row+"-Port").html(""); 
     $.post("/admin/cmdb/switch_ports/"+switch_id+"/", { "func": "getNameAndTime" }, 
       function(data){ 
      for (var i = 0; i < data.length; i++) { 
       var onePort = "<option value=\""+data[i].pk+"\">"+data[i].fields.PortNum+"</option>"; 
       $("#id_AccountLine-"+row+"-Port").append(onePort); 
      } 
       }, "json"); 
     }); 
    }); 
+0

Vous devez accepter soit cette réponse ou celui qui l'a inspiré, selon que il représente un développement significatif de ce qui a été expliqué ici. L'acceptation des réponses est importante car elle empêche les gens de perdre du temps lors de la recherche de questions sans réponse. Il est également important de donner aux gens la reconnaissance d'avoir fourni une réponse utile. De plus, cela vous donne une meilleure apparence et vous aide à obtenir des réponses à l'avenir. – intuited