我知道这是一个老问题……但我是 Django 新手,在寻找用所有标签选项填充 Ajax 下拉列表的方法时发现了这个问题。我想出了一种方法,djangorestframework
并想在这里为其他人提供一个更完整的解决方案(OP 也可以用响应填充侧边栏,或者用它做任何其他事情)。
这会添加一个 api 端点tag
,因此您不仅可以通过导航查看它们,还可以/tag/
获取适合 Ajax 的 JSON 响应(ergo,假设您已djangorestframework
安装并正在使用)。
序列化程序.py
from taggit.models import Tag
class MyTagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = ['name', 'slug']
视图.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
网址.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);
});
});