2010-12-02 2 views
3

У меня есть объект профиля с manytomany отношения к категорииДжанго ModelMultipleChoiceField QuerySet/фильтр для объектов уже связан


class Profile(models.Model): 
    . . . 
    category = models.ManyToManyField(Category, blank=True) 

В моей форме, я хочу, чтобы отобразить галочка только категорию, связанную с профилем Кодекса ниже будут отображаться все категории.


class ProfileForm(ModelForm): 
    . . . 
    category = forms.ModelMultipleChoiceField(Category.objects.all(), 
        widget=forms.CheckboxSelectMultiple()) 

Как написать запрос, чтобы я показывал только категории, связанные с профилем? Я вариация этого:


    category = forms.ModelMultipleChoiceField(Category.objects.filter(id__in=Profile.category.all()), widget=forms.CheckboxSelectMultiple()) 

имеет эту ошибку: объект «ReverseManyRelatedObjectsDescriptor» не имеет атрибута «все»

+0

Nevermind: Я должен определить запрос в представлении. Я полагаю, что имеет место переменная времени выполнения form.fields ["category"]. Queryset = Category.objects.filter (profile = profile) –

ответ

0

Насколько я знаю, «категория» отношения может быть связана только с Профиль экземпляр (присвоение связанных категорий), а не из самого профиля класса. Вот почему вы получаете сообщение об ошибке.

Если вы замените Profile в своем примере фактическим экземпляром профиля (который, как я прочитал, вы на самом деле пытаетесь достичь), он будет работать лучше.

category=forms.ModelMultipleChoiceField(
    Category.objects.filter(id__in=your_profile_instance.category.all()), 
    widget=forms.CheckboxSelectMultiple() 
) 

или просто

category=forms.ModelMultipleChoiceField(
    queryset=your_profile_instance.category.all()), 
    widget=forms.CheckboxSelectMultiple() 
) 

ли я правильно понял ваш вопрос?

Смежные вопросы