Форум сайта python.su
0
Есть вот такие модели:
class DocumentGroup(models.Model):
title = models.CharField(u'Название группы', max_length=255)
number = models.CharField(u'Номер группы', max_length=3)
def __unicode__(self):
return u'%s %s' % (self.number, self.title)
class Document(models.Model):
group = models.ForeignKey(DocumentGroup)
number = models.CharField(u'Номер документа в группе', max_length=3)
title = models.CharField(u'Название документа', max_length=255)
def __unicode__(self):
return u'%s.%s %s' % (self.group.number, self.number, self.title)
class DocumentForm(forms.Form):
id = forms.IntegerField(widget=forms.HiddenInput, required=False)
documents = forms.ModelMultipleChoiceField(queryset = Document.objects.none(), widget=CheckboxSelectMultipleGroups,
required=False, label=u'Документы')
services = forms.ModelMultipleChoiceField(queryset = Service.objects.all(), widget=forms.MultipleHiddenInput)
categories = forms.ModelMultipleChoiceField(queryset = Category.objects.all(), widget=forms.MultipleHiddenInput)
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
initial=None, error_class=forms.util.ErrorList, label_suffix=':',
empty_permitted=False):
super(DocumentForm, self).__init__(data, files, auto_id, prefix,
initial, error_class, label_suffix,
empty_permitted)
services = None
if data:
services = data.getlist('services')
if initial:
services = initial['services']
if services:
self.fields[u'documents'].queryset = Document.objects.filter(service__in=services).distinct()
Document.objects.filter(service__in=services).distinct()
Офлайн
0
Вот он виновник:
def __unicode__(self):
return u'%s.%s %s' % (self.group.number, self.number, self.title)
Отредактировано (Авг. 1, 2011 09:34:46)
Офлайн
0
pillСпасибо! То, что нужно.
Вот он виновник:В виджете ModelMultipleChoiceField для генерации списка используеться model.__unicode__ который каждый раз дергает БД дабы получить self.group.number.def __unicode__(self):
return u'%s.%s %s' % (self.group.number, self.number, self.title)
QuerySet.select_related должен помочь.
Офлайн