我的models.py如下:
class SellerMarketplaces(models.Model):
id = models.IntegerField(db_column='ID',primary_key=True) # Field name made lowercase.
seller_id = models.ForeignKey('Sellerdetails',db_column='Seller_ID') # Field name made lowercase.
mk_id = models.ForeignKey('Marketplace',db_column='Mk_ID') # Field name made lowercase.
username = models.CharField(db_column='Username', max_length=100, blank=True, null=True)
我的 View 中有以下代码
def marketplaces(request):
seller = request.GET.get('seller', '')
allmarketplaces = SellerMarketplaces.objects.filter(seller_id = seller).values('mk_id__marketplace')
for i in range(len(allmarketplaces)):
print allmarketplaces[i]['mk_id__marketplace']
return render_to_response(request,'soumi1.html',{'marketplaces':marketplaces})
我从 print allmarketplaces[i]['mk_id__marketplaces] 行获取值(Flipkart 和 Snapdeal),但返回给我一个 500 错误。
我的 html 文件是:
<select name="marketplace" id="txtHint" size="1" required>
<option value="">Select Marketplace</option>
{% if marketplaces.count > 0 %}
{% for marketplace in marketplaces %}
<option value = {{ marketplace.id }}>{{ marketplace.marketplace }} </option>
}
{% endfor %}
{% endif %}
我使用的 JavaScript 是:
function showUser(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",'/marketplaces?seller='+username['value']);
xmlhttp.send();
}
最佳答案
此行引起了麻烦:
return render_to_response(request,'soumi1.html',{'marketplaces':marketplaces})
您正在返回marketplaces
,但您的 View 也称为marketplaces
。
猜测一下,我会说您想要返回市场列表。
您可以通过以下方式做到这一点:
marketplaces_list = SellerMarketplaces.objects.filter(seller_id=seller).values_list('mk_id__marketplace', flat=True)
return render_to_response(request,'soumi1.html',{'marketplaces':marketplaces_list})
关于javascript - 下拉列表中字典的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198224/