@trytrytry

Как правильно написать выпадающий список, используя модель?

Мне нужно написать выпадающий список и кнопку ок, при нажатие на которую выбранный элемент попадает в бд. Вот я нашла код выпадающего списка.

index.html
<form action="file.php" method="get">
<select name="linksNav" size="1">
<option value="{% url 'useappl' useappl_id=p.id %}" selected >{{p.calendar}}</option>
</select>
</form>


Я так понимаю мне надо написать во views два метода:

def index(request): if request.user.is_authenticated(): t=Application.objects.get(status1=True)

    return render(request, 'useappl/index.html', { 't' : t } )
else:
    return HttpResponseRedirect(reverse('account.views.login'))

и еще метод который как раз будет обрабатывать выбранный элемент

def useappl(request, useappl_id):
    t=Application.objects.get(pk=useappl_id)
    return HttpResponseRedirect(reverse('account.views.login'))

И теперь я не знаю какие урл написать в индекс.html. Помогите пожалуйста.

И в useappl по какому имени брать request.post["***"]?
У меня только нет file.php. Это из найденного кода.
Наверное метод useappl не есть правильный, если я не использую пост. Когда в темплейте его передаю. Помогите пожалуйста разобраться.
  • Вопрос задан
  • 9240 просмотров
Пригласить эксперта
Ответы на вопрос 3
SilentSokolov
@SilentSokolov
Почитайте про формы в django, там на примерах объяснено как сделать и выпадающий список и простое поле и загрузку файлов.

Тот пример что вы нашли вообще из другой степи, django это язык python, а file.php - это язык php, в одно проекте их не встретишь.

Вот, очень натянутый пример использования modelform:

models.py
class Application(models.Model):
    brand = models.ForeignKey('Brand', blank=True, null=True)

forms.py
class ApplicationForm(ModelForm):
    class Meta:
        model = Application
        fields = ['brand']

views.py
def useappl(request, useappl_id):
    if request.method == 'POST': 
        form = ApplicationForm(request.POST)
        if form.is_valid(): 
            # Обработка
            form.save() # сохранение  модели
            return HttpResponseRedirect('/thanks/')
    else:
        form = ApplicationForm()

    return render(request, 'contact.html', {'form': form})

contact.html
{{ form }} # выведет форму, с выпадающем списком из брендов, останется прилепить кнопку
Ответ написан
@trytrytry Автор вопроса
по заданию должна использовать модель
Ответ написан
Комментировать
@fordiesel
STATUS_CHOICES = (
('new', u'Новое обращение'),
('published', u'Опубликованно'),
('decline', u'Отклонен'),
('duplicate', u'Дубликат'),
)

class Post(models.Model):
status = models.CharField(u'Статус', max_length=30, choices=STATUS_CHOICES)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы