Django несколько раскрывающихся списков с объектами модели - PullRequest
0 голосов
/ 17 марта 2020

Я хочу иметь несколько раскрывающихся списков, в каждом из которых отображаются доступные объекты из одной указанной c модели.

Итак, раскрывающийся список 1:

Apples
Oranges
Pears

и раскрывающийся список 2:

Apples
Oranges
Pears

et c.

Дополнительный вопрос заключается в том, чтобы эти выпадающие списки были связаны / зависели так, чтобы, когда пользователь выбирает элементы, эти выбранные элементы удалялись из оставшихся выпадающих.

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Это возможно. Импортируйте вашу модель в файл представления. Пример:

def editUser(request):
    users = "YourModel".objects.all()

    if request.method="POST":
       selected_Item = request.POST['user.id']
       userID = Employee.objects.get(id=selected_item)
       userID.delete()


    context = {
             'user' : users
    }

    return render(request, "your_template_name", context)

Таким образом, вы выбираете ваш элемент по вашему идентификатору или имени. В ваших шаблонах вы можете сказать "user.your_stuff". Так что, если ваша модель имеет такие вещи, как имя, вы можете написать user.name. Затем удалите материал.

Уровень контекста подобен Dictonary. Вы можете работать с ним в своем шаблоне.

<form method="POST" > {%csrf_token%}
<select name="user.id">
{% for entry in user %}
    <option>  {{ entry.id }} </option>
{% endfor %}
</select>

<input type = "submit" value="Submit">
</form>

Так что теперь у вас есть DropDown Menu, в котором перечислены все записи от пользователя. Вы можете отредактировать свое возвращение в своем просмотре, поэтому просто позвоните на ту же страницу, и вы просто «обновили» сайт, и значение, которое вы хотите удалить, исчезло.

Извините за мой плохой английский sh или за мой плохое объяснение. Я все еще совершенствую свои навыки английского языка sh, а также новые возможности StackOverflow и Django тоже: P Если у вас остались какие-либо вопросы, я здесь, чтобы помочь! :)

1 голос
/ 17 марта 2020

Вы можете использовать для l oop в списке html.

index. html

<ul >
{% for element in model %} 
<li class="product"> {{ element }} </li>
{% endfor %}
</ul>

просмотров. py

def index_function(request):
    model = product_model_name.objects.all()
    context = {
        'model': model,
    }
    return render(request, 'index.html', context)

Теперь вам нужно только стилизовать ul, существует множество учебников с разными стилями!

Бонусный вопрос Вы можете справиться с этими проблемами используя JavaScript. Используя addEventListener, this и element.style.display = "none" вы можете скрыть связанный div, изменив его свойства css.

...