Как получить значение выбранного переключателя для передачи в UpdateView в Django? - PullRequest
0 голосов
/ 12 декабря 2018

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

Значение исключения:
Обратное значение для update-author без аргументов, которые не найдены.Попробован 1 шаблон (ов):

ListView:

class Dashboard(ListView):
model = Author
template_name='catalog/dashboard.html'

def get_context_data(self, **kwargs):
    context = super(EditDashboard, self).get_context_data(**kwargs)
    context["authors"] =Author.objects.all()
    context["publishers"] =Publisher.objects.all()
    context["genres"] =Genre.objects.all()
    return context

UpdateView:

class UpdateAuthor(UpdateView):
model = Author
fields = '__all__'
template_name='catalog/updateauthor.html'
context_object_name = 'author'

Модель:

class Author(models.Model):
first_name = models.CharField(max_length=200, blank=False)
last_name = models.CharField(max_length=200, blank=False)
date_of_birth = models.DateField(null=True, blank =True)
date_of_death = models.DateField(null=True, blank =True)


class Meta:
    ordering = ['first_name', 'last_name']

def __str__(self):
    return  f' {self.first_name} {self.last_name}'

Форма в шаблоне:

<form action="{% url 'update-author' ????? %}" method="post">
        {% csrf_token %}
        {% for author in authors %}
        <input type="radio" name="choice" id="{{ author.id }}" value="{{ author.id }}">
        <label for="author">{{ author.first_name}} {{ author.last_name}}</label><br>
        {% endfor %}
        <input type="submit" value="Update">
    </form>

1 Ответ

0 голосов
/ 13 декабря 2018

Так что, если я понимаю, у вас есть listView со всеми авторами издателей и жанров, и вы хотите вызвать updateView с выбранным автором.

Один из способов - использовать javascript:

  • присвоить идентификатор тегу формы:
  • отобразить событие при нажатии на кнопку отправки
  • получить выбранный элемент радиобокса и значение
  • изменить значение действия формысо значением, которое вы получите
  • вызовите событие submit

Вот пример Jquery, который вы можете использовать для этого:

$(document).ready(function(){
    $('#myformid').submit(function(event) {
        //prevent the form submition on click
        event.preventDefault();
        //get the selected value
        var selected_author_id =$('input[name="choice"]:checked').val();
        console.log(selected_author_id);
        //add this value to our form action attribute
        $(this).attr('action', 'update-author/'+String(selected_author_id));
        //finaly submit the form
        $(this).unbind('submit').submit();
    });
});

Не забудьтеимпортировать также jquery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...