У меня следующая ситуация, у меня есть эта модель:
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_profile,в противном случае он должен скрывать.
Прямо сейчас это выглядит так, и поля Github Link должны быть скрыты:
Иэто мой 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, даже если она изменится.