Django 带有'的下拉列表;其他';显示文本字段的选项

Django 带有'的下拉列表;其他';显示文本字段的选项,django,Django,我正试图用一个表单编写一个Django应用程序,其中包含一个字段“你是如何听说我们的?”这将给出一个下拉列表(电视广告、搜索引擎等),其中包括一个“其他”选项。选择“其他”选项后,下方会出现一个框,用户可以输入唯一的答案 我已经尝试过了,但是被卡住了。任何帮助都将不胜感激 models.py class PersonalInformation(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE

我正试图用一个表单编写一个Django应用程序,其中包含一个字段“你是如何听说我们的?”这将给出一个下拉列表(电视广告、搜索引擎等),其中包括一个“其他”选项。选择“其他”选项后,下方会出现一个框,用户可以输入唯一的答案

我已经尝试过了,但是被卡住了。任何帮助都将不胜感激

models.py

class PersonalInformation(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    HEAR_ABOUT_US = (
        ('option1', 'Option 1'),
        ('option2', 'Option 2'),
        ('other', 'other'),
    )

    hear_about_us = models.CharField('How did you hear about us?', max_length=200, default=None, choices=HEAR_ABOUT_US)
views.py

def personal_information(request):
    if request.method == 'POST':
        form = PersonalInformationForm(request.POST, request.FILES, instance=request.user.personalinformation)
        if form.is_valid():
            if form['hear_about_us'] == 'other':
                form_data = self.get_form_step_data(form)
                form.refer = form_data.get('other', '')
                form.save()
                return redirect('#')
            form.save()
            return redirect('#')

    else:
        form = PersonalInformationForm(instance=request.user.personalinformation)

    context = {
        'form' : form
    }

    return render(request, 'enrolment/personal_information.html', context)
个人信息.html

{% block content %}
<div class="content-section">
    <form method="POST">
        {% csrf_token %}
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">Personal Information</legend>
            {{ form|crispy }}

            <div id='other' class='other'>
                <!-- WANT THE TEXT BOX TO APPEAR HERE / I THINK IT WOULD BE BETTER DONE WITHIN THE FORM AND NOT AS A SEPERATE SECTION UNDER IT -->
            </div>

        </fieldset>
        <div class="form-group">
            <button class="btn btn-outline-info" type="submit">Submit</button>
        </div>
    </form>
</div>

<!-- this script will be moved to the appropriate file -->
<script>jQuery('#id_hear_about_us').on('change', function() {
    if (this.value == 'other' ) {
        jQuery('#other').show();
    }
    else {
        jQuery('#other').hide();
    }
});</script>
{% endblock content %}
多谢各位

class PersonalInformationForm(forms.ModelForm):
    class Meta:
        model = PersonalInformation

        # field added to hear_about_us - if user selects 'other'
        other = forms.CharField(required=False, label='other')

        fields = ['hear_about_us']