Django динамический выпадающий список от базы данных

if (StringA.ToUpperInvariant() == StringB.ToUpperInvariant()) {

Люди сообщают, что ToUpperInvariant () быстрее, чем ToLowerInvariant ().

8
задан geowa4 26 August 2009 в 13:01
поделиться

2 ответа

Три основных элемента, которые вы упомянули, - марка, модель, год - будут тремя входными значениями. При передаче на сервер объект, содержащий детали, будет возвращен на вызывающую страницу. Эта страница будет анализировать детали объекта (используя JavaScript) и обновлять пользовательский интерфейс, чтобы отображать их пользователю.

Со стороны Django, должны быть средства, позволяющие принимать 3 входа и возвращать выход. Со стороны клиента должны быть средства для передачи 3 входных данных на сервер, а затем для соответствующего анализа ответа сервера.

Для Django существует инфраструктура REST api, которая позволяет довольно легко добавить "api" "упомянутый выше - Поршень . Используя Piston, вам просто нужно создать URL-адрес для этого ресурса, а затем добавить обработчик для его обработки. (вам все равно нужно бегло просмотреть документацию по поршню, но это должно дать вам представление о том, как он выглядит)

urls.py:
vehicle_details = Resource(handler=VehicleDetails)
url(r'^vehicle/(?<make>.*)/(?<model>.*)/(?<year\d{2,4}/(?P<emitter_format>[a-z]{1,4}), vehicle_details, name='vehicle_details'),

handler.py:
class VehicleDetails(BaseHandler):
    methods_allowed = ('GET',)
    model = Vehicles  #whatever your Django vehicle model is

    def read(self, request, *args, **kwargs):
        # code to query the DB and select the options
        # self.model.objects.filter()...            
        # Build a custom object or something to return

        return custom_object

Это просто устанавливает URL-адрес www.yoursite.com/vehicle/[makepting/[model ]/ [год] / json, чтобы вернуть пользовательский объект данных в JSON для jquery для синтаксического анализа.

На стороне клиента вы можете использовать jquery для настройки события (привязки), чтобы, когда во всех 3 раскрывающихся меню было выбрано значение, он выполнит $ .get () для URL-адреса API. Когда он получает этот результат обратно, он передает его в парсер JQuery JSON и предоставляет настраиваемый объект в виде объекта javascript. Затем этот объект можно было бы использовать для заполнения большего количества выпадающих меню.

(Большое предупреждение, я просто написал следующее в голове, поэтому он не предназначен для копирования и вставки. Это просто для общей идеи.)

<script type="text/javascript">

    // On document load
    $(function() {
        $('#dropdown_make').bind('change', checkForValues());
        $('#dropdown_model').bind('change', checkForValues());
        $('#dropdown_year').bind('change', checkForValues());
    });

    function checkForValues() {
        if ($('#dropdown_make').val() && $('#dropdown_model').val() && $('#dropdown_year').val())
            updateOptions();        
    }

    function updateOptions() {
        url = '/vehicle/';
        url += $('#dropdown_make').val() + '/';
        url += $('#dropdown_model').val() + '/';
        url += $('#dropdown_year').val() + '/';
        url += 'json/';
        $.get(url, function(){
            // Custom data object will be returned here
        })
    }
</script>

9
ответ дан 5 December 2019 в 19:01
поделиться

Это странно: Поля выбора с динамической фильтрацией в раскрывающемся списке с помощью Django

Его вопрос:

«Вот ситуация: у меня есть база данных с автомобилем марки и модели. Когда пользователь выбирает марку, я хочу обновить раскрывающееся меню моделей только моделями, связанными с этой маркой ... Поэтому я хочу использовать Ajax для заполнения данных ».

Вы не тот парень? :)

0
ответ дан 5 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: