내가 jQuery를 FCBKcomplete 위젯과 다 대다 forms.SelectMultiple 필드를 대체하기 위해에 대한 사용자 정의 위젯을 쓰고 있어요 모델 양식을 손실없이 forms.SelectMultiple 확장. multiselect 요소의 교체가 제대로 작동하지만 더 이상 다중 선택 옵션을 사용하지 않습니다.는 값
<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>
:
여기
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입니다 : 여기
class BlogForm(forms.ModelForm):
class Meta(object):
model = models.Blog
exclude = ('slug',)
def __init__(self, *args, **kwargs):
super(BlogForm, self).__init__(*args, **kwargs)
self.fields['description'].widget = TinyMCEWidget()
fcbkcomplete_fields = ['categories', 'admins', 'editors']
for field in fcbkcomplete_fields:
self.fields[field].widget = FCBKcompleteWidget()
내 모델입니다 : 여기
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)
내 형태 : 여기
내 위젯입니다
보시다시피, 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>
사람이 왜 옵션이 위젯 교체 프로세스를 통해 제작되지 않습니다에 관한 어떤 제안이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.
양식이 ModelForm이므로 코드 모델이 유용합니다. – stefanw
모델이 추가되었습니다. 감사. –
해결 했습니까? 나는 비슷한 문제가있다. –