Python 单击下拉选项并在Django中显示特定字段
我有以下情况,我有这个模型:Python 单击下拉选项并在Django中显示特定字段,python,html,django,if-statement,Python,Html,Django,If Statement,我有以下情况,我有这个模型: class Profile(models.Model): DEVELOPER = 1 MARKETER = 2 ACADEMIC = 3 INFLUENCER = 4 COMMUNITY_MEMBER = 5 ROLE_CHOICES = ( (DEVELOPER, 'Developer'), (MARKETER, 'Marketer'), (ACADEMIC, 'A
class Profile(models.Model):
DEVELOPER = 1
MARKETER = 2
ACADEMIC = 3
INFLUENCER = 4
COMMUNITY_MEMBER = 5
ROLE_CHOICES = (
(DEVELOPER, 'Developer'),
(MARKETER, 'Marketer'),
(ACADEMIC, 'Academic'),
(INFLUENCER, 'Influencer'),
(COMMUNITY_MEMBER, 'Community Member'),
)
user = models.OneToOneField(User)
account_type = models.ForeignKey(AccountType, default=AccountType.FREE)
role = models.PositiveIntegerField(choices=ROLE_CHOICES, null=True, blank=True)
github_profile = models.URLField(blank=True, null=True)
linkedin_profile = models.URLField(blank=True, null=True)
现在我想做的是,如果用户在下拉菜单中单击Developer
选项,github\u配置文件应该出现,否则它应该保持隐藏
现在,看起来是这样的,Github链接字段应该是隐藏的:
这是我的html:
<div class="form-group select-wrapper">
<label for="role">What best describes you?</label>
<select id="role" name="role" class="form-control">
<option selected>Choose an option</option>
{% for index, value in roles_form.fields.roles.choices %}
<option value="{{ index }}">{{ value }}</option>
{% endfor %}
</select>
<span class="role-error hidden" style="color: red"></span>
</div>
<div class="form-group">
<label for="github_profile">GitHub Profile (optional)</label>
<input type="url" class="form-control" name="github_profile" id="github_profile" placeholder="https://github.com/your-profile">
<span class="github_profile-error hidden" style="color: red"></span>
</div>
它可以工作,但我得到了以下反馈:这里您已经硬编码了值“1”,但是如果此列表上的位置发生变化,则此行为将中断。相反,您应该引用变量{{model.profile.DEVELOPER}},它将生成变量DEVELOPER的当前值,即使它发生变化。我认为实现这一点的唯一方法是使用Javascript。例如,对于本例中的jQuery:您想在哪里显示它?在django admin?或者在你自己的表单模板中?@Lemayzeur我编辑了这个问题,因此它当前在我的html模板中,但是Github链接应该是隐藏的。你可以用js@Lemayzeur只是在html模板的末尾添加脚本标记,对吗?正确,将事件侦听器添加到
select
标记,以检测何时选择了developer
$('select').on('change', function() {
var value = $(this).val();
if (value == 1) {
$('#github_link').show();
} else if (value != 1) {
$('#github_link').hide();
}
})