2014-04-25 53 views
0

我正在尝试使用Django编写表单,但我无法设置Select字段的名称。在Django生成的选择字段中设置名称属性

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 = “接班人”。为什么?

+0

对于你的问题有一个更简单的答案。检查[这里] [1]发布了.. [1]:http://stackoverflow.com/questions/8801910/override-django-form-fields-name-attr – Darwesh

回答

0

我相信name属性不能使用attrs来覆盖,因为widget呈现的方式不同。但是,如果您检出this answer to a similar question,则会发现一个包装函数,它允许您指定自己的名称属性。

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%!

祝您有美好的一天!