【问题标题】:How to get selected radio button value to pass to UpdateView in Django?如何获取选定的单选按钮值以传递给 Django 中的 UpdateView?
【发布时间】:2018-12-12 20:47:32
【问题描述】:

我想通过单选按钮获取选定的值并将其传递给更新视图,但我找不到方法。两种视图都是基于类的。

异常值:
未找到任何参数的“更新作者”的反向。尝试了 1 种模式:

列表视图:

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

更新视图:

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>

【问题讨论】:

    标签: radio-button django-class-based-views django-2.0


    【解决方案1】:

    因此,如果我了解您有一个包含所有作者、出版商和流派的 listView,并且您希望在选择作者的情况下调用 updateView。

    一种方法是使用javascript:

    • 给表单标签一个id:
    • 将点击事件映射到提交按钮
    • 获取选中的单选框元素和值
    • 将表单操作值更改为您获得的值
    • 调用提交事件

    这里有一些 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 以及

    【讨论】:

    • 嗨 Ben,你能举个例子来使用 Javascript。
    猜你喜欢
    • 2021-04-14
    • 2017-11-30
    • 2014-09-09
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2020-11-12
    相关资源
    最近更新 更多