我有内联的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 )
在管理界面中,我有内联的Account类。结果我生成了这样的HTML:
<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>
我对JavaScript不是很擅长,根据选择的Switch选项框,你能帮我预先填充Port选项框吗? 我已经做了什么: 创建了JSON查询和视图,它返回特定swicth的端口,我不知道该怎么做是如何为内联字段设置动态id,以及如何在添加一行时自动执行此操作? 感谢您提前提出任何想法和帮助。
答案 0 :(得分:0)
我按照你的建议做了,在那篇文章中,它工作得很好,这是我做过的JavaScript:
$(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");
});
});