models.py
class Doctor(models.Model):
name = models.CharField(max_length=255)
class Album(models.Model):
doc = models.ForeignKey(Doctor)
name = models.CharField(max_length=255)
class Video(models.Model):
doc = models.ForeignKey(Doctor)
album = models.ForeignKey(Album)
src = models.CharField(max_length=500)
如上所示,在“视频管理”添加/更改页面中,有两个下拉菜单可供选择:专辑和医生。
但是,当我选择一个相册(例如album.id = 1并属于doctor.id = 5)时,Doctor下拉菜单会显示所有Doctors,但我只想与选择的相册相关的唯一一个医生
我尝试了https://github.com/BranchMetrics/xamarin-branch-deep-linking/tree/master/Examples,但没有成功。 而且,我在VideoAdmin(admin.ModelAdmin,ExportCsvMixin)类下添加了autocomplete_fields = ['doc'],它也无法正常工作。
有人可以帮我吗?非常非常感谢!
答案 0 :(得分:1)
我找到了一种方法,该方法可以覆盖Admin的change_form.html来添加一些jQuery代码来实现它。
/PROJECT_DIR/templates/admin/APP_NAME/MODEL_NAME/change_form.html
{% extends "admin/change_form.html" %}
{% block extrahead %}
{{ block.super }}
<script>
jQuery(document).ready(function ($) {
$( "select#id_aid" ).change(function() {
$.getJSON("/api/getAlbumRelatedDoc/",{id: $(this).val()}, function(j){
for (var i = 0; i < j.length; i++) {
options = '<option value="' + j[i].doc + '">' + j[i].doc__name + '</option>';
}
$("select#id_doc").html(options);
$("span#select2-id_doc-container").html(j[0].doc__name)
});
});
});
</script>
{% endblock %}
/PROJECT_DIR/APP_NAME/views.py
@api_view(['GET', 'POST'])
def get_album_relate_doc(request):
id = request.GET.get('id','')
result = list(Album.objects.filter(id=int(id)).values('doc', 'doc__name'))
return HttpResponse(json.dumps(result), content_type="application/json")
/PROJECT_DIR/APP_NAME/urls.py
path('getAlbumRelatedDoc/', views.get_album_relate_doc),
顺便说一句,我使用django-jet作为管理员替代品。