我有一个这样的模型
class Content(models.Model):
name = Model.CharField(max_length=255, blank=False, null=False)
type = Model.CharField(max_length=1, blank=False, null=False, choices=CONTENT_CHOICE)
lesson = Model.CharField(max_length=255, blank=False, null=False)
exam = Model.CharField(max_length=255, blank=False, null=False)
和CONTENT_CHOICE喜欢
CONTENT_CHOICE = (("1", "Lesson"), ("2", "Exam"))
我的目标是,当输入者从Admin
插入此模型的新记录时,如果输入者选择“课程”,则字段exam
将被禁用,反之亦然。您能告诉我该怎么做吗?我搜索了一些教程,但似乎都没有任何线索。谢谢。
答案 0 :(得分:0)
您必须使用CSS和JavaScript在项目的前端进行此操作。
css
.field-exam {
display: none; /* this will be the initial display value */
}
js
type = document.getElementById('id_type');
field-exam = document.querySelector('.field-exam');
type.onchange = () => {
if ( type.value === '1' ){
field-exam.style.display = 'none';
else if ( type.value === '2' ){
field-exam.style.display = 'block';
}
然后,要覆盖管理模板,您需要将其放入
<project_root>/<app_folder>/static/<app_folder>/
然后,在模板中,您必须导入新的CSS和js
change_form.html
{% extends "admin/change_form.html" %}
{% load static %}
{% block extrastyle %}
{{ block.super }}
<link rel="stylesheet" href="{% static '<app_name>/<css_file>'%}">
{% endblock %}
{% block admin_change_form_document_ready %}
{{ block.super }}
<script type="text/javascript" src="{% static '<app_name>/<js_file>' %}"></script>
{% endblock %}
将html文件保存在
中<project_root>/<app_folder>/template/admin/<app_folder>/<model_name>/