これは古い質問ですが、私はDjangoの初心者であり、Ajaxドロップダウンにすべてのタグオプションを入力する方法を探しているときにこの質問を見つけました。私は方法を考え出しdjangorestframework
、他の人のためにもっと完全な解決策をここに置きたいと思いました(OPはサイドバーに応答を入力したり、他のことをしたりすることもできます)。
これにより、APIエンドポイントが追加されるtag
ため、に移動して表示するだけでなく/tag/
、Ajaxに適したJSON応答を取得できます(これは、djangorestframework
インストールして使用していることを前提としています)。
serlializers.py
from taggit.models import Tag
class MyTagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = ['name', 'slug']
views.py
from taggit.models import Tag
class TagViewSet(viewsets.ModelViewSet):
"""
Not using taggit_serializer.serializers.TaggitSerializer because that's for listing
tags for an instance of a model
"""
queryset = Tag.objects.all().order_by('name')
serializer_class = MyTagSerializer
urls.py
router.register(r'tag', TagViewSet)
そして、ajaxが必要な場合:
$(document).ready(function(){
$.ajax({
url : "/tag/",
dataType: "json",
type: 'GET'
}).done(function(response){
for (var i in response) {
tagEntry = response[i];
$('#tagdropdown').append($('<option>', {
value: tagEntry.name,
text: tagEntry.name
}));
}
}).fail(function(response){
console.log('failed!');
console.log(response);
});
});