私は多くのフィールドを持つフォームを持っていますが、選択した国と選択した国の都市を選択する2つの選択肢があります。AJAX、Django、およびHTMLを選択しますか?
私はこれをしたいと思います:最初の選択で国を選択すると、選択した主義のIDでフィルタリングされた2番目の都市の都市を変更したいと思います。ここで
は私のModels.py
class country(models.Model):
country_name = models.CharField(max_length=264)
def __str__(self):
return self.country_name
class country_cities(models.Model):
city_name = models.CharField(max_length=264)
country = models.ForeignKey(country)
def __str__(self):
return self.city_name
されており、ここに私のHTMLフォームです:
<form method="post">
<input type="text" name="username">
<select name="country" onchange="listCities()">
{% for country in countrylist %}
<option value="{{ country.id }}">{{ country.country_name }}</option>
{% endor %}
</select>
<select name="city" id="citylist">
<!--HERE IS WHERE I WANT TO LIST JUST THE CITIES OF THE COUNTRY THAT I SELECTED-->
</select>
</form>
は、どのように私は私のビューを作成しないと私は私のviews.pyにインポートする必要がどのようなライブラリ?また、私のAJAXライブラリやスクリプトが正しいかどうかはわかりません。
AJAX:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
</script>
SCRIPT:
<script type="text/javascript">
function listCities()
{
var countryid = $("[name='country']").val();
$('#citylist').html('');
$.ajax({
type: "POST",
data: "countryid="+countryid,
url: "editprofile/",
success: function(result)
{
var resultObj = JSON.parse(result);
var dataHandler = $("#citylist");
$.each(resultObj, function(key, val)
{
var newRow = $('<option value="'+val.id+'">');
newRow.html(' '+val.city_name +'');
dataHandler.append(newRow);
});
}
});
}
</script>
Ajaxコールを行う代わりに、すべての都市をjsonオブジェクトのクライアント側にロードし、プレーンなjavascriptを使用して2番目の選択でオプションを変更することを検討しましたか? – DragonBobZ
これはどのように見えるかについての手伝いhttps://jsfiddle.net/q4np1169/です。 (jqueryを使用し、プレーンなjsは使用しない) – DragonBobZ