单击下拉选项并显示 Django 中的特定字段

Click in a dropdown option and show an specific field in Django

提问人:Enrique Vargas 提问时间:6/8/2018 最后编辑:Enrique Vargas 更新时间:6/8/2018 访问量:2309

问:

我有以下情况,我有这个模型:

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)

现在我想做的是,如果用户在下拉列表中单击该选项,则github_profile应该出现,否则它应该保持隐藏状态。Developer

现在,看起来像这样,Github Link 字段应该被隐藏:

enter image description here

这是我的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>

我知道这是一个有条件的事情,但是我是 Django 的新手,我不太确定如何实现它。

编辑:

我做了以下功能:

$('select').on('change', function() {

          var value = $(this).val();
          if (value == 1) {
             $('#github_link').show();
          } else if (value != 1) {
             $('#github_link').hide();
          }
  })

它有效,但我得到了以下反馈:在这里,您已经对值“1”进行了硬编码,但是如果此列表中的位置发生变化,则此行为将中断。相反,您应该引用变量 {{ model.profile.DEVELOPER }},它将生成变量 DEVELOPER 的当前值,即使它发生了变化。

python html django if-语句

评论

1赞 Lemayzeur 6/8/2018
你想在哪里展示?在 Django Admin 中?还是在您自己的表单模板中?
0赞 Enrique Vargas 6/8/2018
@Lemayzeur我编辑了这个问题,所以它目前在我的 html 模板中,但 Github 链接应该被隐藏。
0赞 Lemayzeur 6/8/2018
你可以用 js 来做到这一点
0赞 Enrique Vargas 6/8/2018
@Lemayzeur 只是在html模板的末尾添加脚本标签,对吧?
1赞 Lemayzeur 6/8/2018
正确,将事件侦听器添加到代码中,以检测何时选择selectdeveloper

答:

0赞 Master Bruce 6/8/2018 #1

我认为实现这一目标的唯一方法是使用 Javascript。例如,使用jQuery,如以下示例所示:https://stackoverflow.com/a/26589859/5698557