在Django生成的select字段中设置name属性

时间:2014-04-25 16:28:14

标签: html django forms

我正在尝试使用Django编写表单,但我没有设置Select字段的名称。

class MyForm(forms.Form):
    successor = forms.ChoiceField(widget=forms.Select(
        attrs = {'name': 'to_player', 'onclick':'this.form.submit();'}
        )
    )

给出这个输出:

<label for="id_successor">Successor:</label>
<select id="id_successor" name="successor" onclick="this.form.submit();"></select>

但应该是name =“to_player”而不是name =“successor”。为什么呢?

2 个答案:

答案 0 :(得分:0)

我认为name属性无法使用attrs覆盖,因为窗口小部件的呈现方式。但是,如果您签出this answer to a similar question,您将找到一个包装函数,允许您指定自己的名称属性。

答案 1 :(得分:0)

我使用javascript解决了这个问题。

您可以在表单中添加id属性:

class MyForm(forms.Form):
    successor = forms.ChoiceField(widget=forms.Select(attrs = {'id':'id_player', 'name': 'to_player','onclick':'this.form.submit();'} ))

在模板的末尾,您可以输入以下javascript代码:

<!DOCTYPE html>
<html>
<head>
...
</head>

<body>
...
...
<script type="text/javascript">
$(document).ready(function(){ 
document.getElementById('id_player').name = 'to_player';
});
</script>

</body>
</html>

通过这种方式我解决了这个问题。并且100%工作!

度过美好的一天!