我有一个模型表单,我正在为它编写一个自定义小部件,以便替换多对多forms.SelectMultiple具有jQuery FCBKcomplete小部件的字段。虽然multiselect元素的替换工作正常,但它不再拖动multiselect的选项。在
这是我的小工具:
class FCBKcompleteWidget(forms.SelectMultiple):
def _media(self):
return forms.Media(js=(reverse('appstatic',
args=['js/jquery.fcbkcomplete.min.js']),
reverse('appstatic',
args=['js/init-fcbkcomplete.js'])),
css={'all': (reverse('appstatic',
args=['css/jquery.fcbkcomplete'
'.css']),)})
media = property(_media)
这是我的表格:
^{pr2}$以下是我的模型:
class Category(models.Model):
"""A blog category"""
title = models.CharField(max_length=128)
slug = models.SlugField()
class Meta(object):
verbose_name_plural = u'Categories'
def __unicode__(self):
return self.title
@models.permalink
def get_absolute_url(self):
return ('category', (), {'slug': self.slug})
class Blog(models.Model):
"""A blog"""
title = models.CharField(max_length=128)
slug = models.SlugField(unique=True)
description = models.TextField()
categories = models.ManyToManyField(Category, related_name='blogs')
shared = models.BooleanField()
admins = models.ManyToManyField(User, related_name='blog_admins')
editors = models.ManyToManyField(User, related_name='blog_editors')
def __unicode__(self):
return self.title
@models.permalink
def get_absolute_url(self):
return ('blog', (), {'slug': self.slug})
以下是生成的HTML:
<div class="field">
<label for="name">Categories</label>
<select multiple="multiple" name="categories" id="id_categories">
</select>
<div class="help-text">trimmed for readability</div>
</div>
<div class="field">
<label for="name">Admins</label>
<select multiple="multiple" name="admins" id="id_admins">
</select>
<div class="help-text">trimmed for readability</div>
</div>
<div class="field">
<label for="name">Editors</label>
<select multiple="multiple" name="editors" id="id_editors">
</select>
<div class="help-text">trimmed for readability</div>
</div>
如您所见,没有一个选项将其放入multiselect元素中。当生成的小部件是我的自定义小部件时,请不要在此处用HTML替换:
<div class="field">
<label for="name">Categories</label>
<select multiple="multiple" name="categories" id="id_categories">
<option value="1" selected="selected">Good Stuff</option>
</select>
<div class="help-text">trimmed</div>
</div>
<div class="field">
<label for="name">Admins</label>
<select multiple="multiple" name="admins" id="id_admins">
<option value="2" selected="selected">username</option>
<option value="3">some username</option>
<option value="4">another username</option>
</select>
<div class="help-text">trimmed</div>
</div>
<div class="field">
<label for="name">Editors</label>
<select multiple="multiple" name="editors" id="id_editors">
<option value="2" selected="selected">username</option>
<option value="3">some username</option>
<option value="4">another username</option>
</select>
<div class="help-text">trimmed</div>
</div>
有人对为什么这些选项没有通过widget替换过程有什么建议吗?任何帮助都将不胜感激。在
一年过去了,但即使使用当前的django版本,答案也可能很有价值。在
这种行为的原因似乎是缺少fcbk字段的CHOICES属性 把选择推到表单上
对于init,它将把POST请求附带的所有选项添加到select主体。在
相关问题 更多 >
编程相关推荐