如何在不使用典型Django表单视图的情况下从选择表单中检索数据?

时间:2019-09-14 04:40:11

标签: python forms

由于在使所有内容完全按我的要求工作方面存在一些困难,我决定不使用Django表单视图来获取数据,而是从在html中创建的选择表单中检索数据。我只在检索数据,但是由于我是新手,所以我不知道自己不知道什么。这是可以接受的方式吗?

views.py

def compare_view(request):
    query = models.Package.objects.all().order_by('make_model__v_make') \
        .annotate(make=F('make_model__v_make')) \
        .annotate(model=F('make_model__v_model'))
    choice1 = request.GET.get('choice1')
    choice2 = request.GET.get('choice2')
    default = models.Package.objects.get(pk=9)

    if request.GET:
        try:
            result1 = models.Package.objects.get(pk=choice1)
        except models.Package.DoesNotExist:
            result1 = default
        try:
            result2 = models.Package.objects.get(pk=choice2)
        except models.Package.DoesNotExist:
            result2 = default
        try:
            vehicle1 = models.Vehicle.objects.get(pk=result1.make_model.pk)
        except models.Vehicle.DoesNotExist:
            vehicle1 = None
        try:
            vehicle2 = models.Vehicle.objects.get(id=result2.make_model.pk)
        except models.Vehicle.DoesNotExist:
            vehicle2 = None
    else:
        result1 = None
        result2 = None
        vehicle1 = None
        vehicle2 = None

    return render_to_response('main/vehicle_compare.html', 
    {'query':query, 'result1':result1, 'result2':result2, 
    'vehicle1': vehicle1, 'vehicle2': vehicle2})

html

<form name="vform" class="compare-form" method="get">
        <select id="selection1" class="form-control" name="choice1">
            <option value="" selected disabled>Select Vehicle 1</option>
            {% for q in query %}
            <option value="{{q.pk}}"
            {% ifequal q.pk result1.pk %}selected{% endifequal %}>
                {{ q.make }} {{ q.model }} {{ q.name }}
            </option>
            {% endfor %}
        </select>

        <input id="compare-btn" value="COMPARE" type="submit">

        <select id="selection2" class="form-control" name="choice2">
            <option value="" selected disabled>Select Vehicle 2</option>
            {% for q in query %}
            <option value="{{q.pk}}"
            {% ifequal q.pk result2.pk %}selected{% endifequal %}>
                {{ q.make }} {{ q.model }} {{ q.name }}
            </option>
            {% endfor %}
        </select>
    </form>

0 个答案:

没有答案