Django проблема поиска в нескольких полях - PullRequest
0 голосов
/ 27 марта 2020

моя проблема в том, что когда я добавляю простую функциональность к отдельным полям поиска, она работает нормально, как я и ожидала, например, после добавления функциональности для поля местоположения она работает нормально, как я хотела, но когда я добавляю такую ​​же функциональность для другого поля, она не отображается результаты, хотя 1-е поле показывало результаты, но теперь ни одно из них не показывало ничего. Я не уверен, в чем проблема, я болтаюсь последние 2 дня. помогите пожалуйста

HTML форма поиска

<form action="{% url 'search-page' %}" method="">
    <div class="row">
        <div class="col-12 col-lg-10">
            <div class="row">
                <div class="col-12 col-md-6 col-lg-3">
                    <select name="location" id="" class="form-control">
                        <option value="">Location</option>
                        {% for key,value in location_choices.items %}
                        <option value="{{ key }}">{{ value }}</option>
                        {% endfor %}
                    </select>
                </div>
                <div class="col-12 col-md-6 col-lg-3">
                    <select name="types" id="" class="form-control">
                        <option value="all-types">All Types</option>
                        {% for key,value in property_choices.items %}
                        <option value="{{ key }}">{{ value }}</option>
                        {% endfor %}

                    </select>
                </div>
                <div class="col-12 col-md-6 col-lg-3">
                    <select name="city" id="" class="form-control">
                        <option value="01">All City</option>
                        {% for key,value in city_choices.items %}
                        <option value="{{ key }}">{{ value }}</option>
                        {% endfor %}

                    </select>
                </div>
                <div class="col-12 col-md-6 col-lg-3">
                    <select name="status" id="all" class="form-control">
                        <option value="01">Status</option>
                        {% for key,value in status_choices.items %}
                        <option value="{{ key }}">{{ value }}</option>
                        {% endfor %}

                    </select>
                </div>
                <div class="col-12 col-md-6 col-lg-3">
                    <select name="bedroom" id="bedrooms" class="form-control">
                        <option value="">Bedrooms</option>
                        {% for key,value in bedroom_choices.items %}
                        <option value="{{ key }}">{{ value }}</option>
                        {% endfor %}

                    </select>
                </div>
                <div class="col-12 col-md-6 col-lg-3">
                    <select name="bathroom" id="bathroom" class="form-control">
                        <option value="Bathroom">Bathroom</option>
                        {% for key,value in bathroom_choices.items %}
                        <option value="{{ key }}">{{ value }}</option>
                        {% endfor %}

                    </select>
                </div>
                <div class="col-12 col-md-6 col-lg-3">
                    <select name="price" id="bathroom" class="form-control">
                        <option value="Bathroom">Price</option>
                        {% for key,value in price_choices.items %}
                        <option value="{{ key }}">{{ value }}</option>
                        {% endfor %}

                    </select>
                </div>
                <div class="col-12 col-md-6 col-lg-3">
                    <select name="size" id="bathroom" class="form-control">
                        <option value="Bathroom">Lot Size</option>
                        {% for key,value in lot_area_choices.items %}
                        <option value="{{ key }}">{{ value }}</option>
                        {% endfor %}

                    </select>
                </div>
                <!-- <div class="col-12 col-md-6 col-lg-3">
                    <div class="slider-range mb-15">
                        <div class="range-price text-white">Price [30000 - 150000]$</div>
                        <div class="slider-range-price ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all"
                            data-min="0" data-max="200000" data-unit="$" data-value-min="30000"
                            data-value-max="150000" data-label-result="Price">
                            <div class="ui-slider-range ui-widget-header ui-corner-all"></div>
                            <span class="ui-slider-handle ui-state-default ui-corner-all"
                                tabindex="0"></span>
                            <span class="ui-slider-handle ui-state-default ui-corner-all"
                                tabindex="0"></span>
                        </div>
                    </div>
                </div> -->
                <!-- <div class="col-12 col-md-6 col-lg-3">
                    <div class="slider-range mb-15">
                        <div class="range-size text-white">Size [9762 - 72063]sqFt</div>
                        <div data-min="0" data-max="98623" data-unit="sqFt"
                            class="slider-range-size ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all"
                            data-value-min="9762" data-value-max="72063" data-label-result="Size">
                            <div class="ui-slider-range ui-widget-header ui-corner-all"></div>
                            <span class="ui-slider-handle ui-state-default ui-corner-all"
                                tabindex="0"></span>
                            <span class="ui-slider-handle ui-state-default ui-corner-all"
                                tabindex="0"></span>
                        </div>
                    </div>
                </div> -->
            </div>
        </div>
        <div class="col-12 col-lg-2">
            <button type="submit" class="btn rehomes-search-btn">Search</button>
        </div>
    </div>
</form>

views.py

def search(request):
    property_ list = Property.objects.order_by('-date_added')

    # Search_location
    if 'location' in request.GET:
        location = request.GET['location']
        if location:
            property_list = property_list.filter(state__iexact=location)

    # Search_property_types
    if 'types' in request.GET:
        types = request.GET['types']
        if types:
            property_list = property_list.filter(property_types__iexact=types)

    # Search_city
    if 'city' in request.GET:
        city = request.GET['city']
        if city:
            property_list = property_list.filter(city__iexact=city)

    context = {

        'location_choices': choices.location_choices,
        'property_choices': choices.property_choices,
        'city_choices': choices.city_choices,
        'status_choices': choices.status_choices,
        'bedroom_choices': choices.bedroom_choices,
        'bathroom_choices': choices.bathroom_choices,
        'price_choices': choices.price_choices,
        'lot_area_choices': choices.lot_area_choices,
        'property_data': property_list,
    }
    return render(request, 'property/search.html', context)

модели .py

class Property(models.Model):
    agent = models.ForeignKey(Agent, on_delete=models.DO_NOTHING)
    title = models.CharField(max_length=200)
    description = models.TextField()
    property_types = models.CharField(max_length=50, choices=property_types)
    address = models.CharField(max_length=100)
    city = models.CharField(max_length=50)
    state = models.CharField(max_length=50)
    zip_code = models.CharField(max_length=50)
    bedroom = models.IntegerField()
    bathroom = models.IntegerField()
    garage = models.IntegerField()
    lot_area = models.IntegerField()
    price = models.IntegerField()
    status = models.CharField(max_length=50, choices=status)
    year_build = models.DateTimeField(auto_now=False)
    main_image = models.ImageField(upload_to='property/%Y/%m/')
    image_1 = models.ImageField(upload_to='property/%Y/%m/', blank=True)
    image_2 = models.ImageField(upload_to='property/%Y/%m/', blank=True)
    image_3 = models.ImageField(upload_to='property/%Y/%m/', blank=True)
    floor_plans = models.ImageField(upload_to='property/floorplans/%Y/%m/', blank=True)
    date_added = models.DateTimeField(auto_now_add=True)
    is_published = models.BooleanField(default=True)

    def __str__(self):
        return self.title
...