下面的类继承自Textarea小部件,并具有javascript代码,显示用户可以在textarea中输入的字符数.
class TextAreaWithCharCounter(forms.Textarea):
class Media:
js = ('js/jquery.charcounter.js',)
def render(self, name, value, attrs = None):
id = attrs['id']
max_length = self.attrs.get('max_length', 200)
output = super(TextAreaWithCharCounter, self).render(name, value, attrs)
output += mark_safe(u'''
<script type="text/javascript">
$("#%s").charCounter(%d, {classname:"charcounter"});
</script>'''%(id, max_length))
return output
Run Code Online (Sandbox Code Playgroud)
表格代码的相关部分如下:
class MyForm(forms.Form):
foo = forms.CharField(max_length = 200, widget = TextAreaWithCharCounter(attrs={'max_length':200}))
...
Run Code Online (Sandbox Code Playgroud)
你可以看到我传递了max_length两次参数,一个用于字段,一个用于小部件.更好的方法是从窗口小部件内部访问表单字段并获取其max_length属性,以便窗口小部件不需要max_length参数.我怎样才能做到这一点?
我有一个BusinessBranch模型的城市外键.我的城市模型还有州和县模型的州和国家外键.我很难在BusinessBranchInline中显示State和Country下拉菜单.实现这一目标的最佳方法是什么?如果下拉菜单根据其父级的值过滤项目,那将是很好的.