ChoiceField - выбор на основе логического поля - PullRequest
0 голосов
/ 21 декабря 2010

Я пытаюсь получить поле выбора, в котором отображаются только пользователи, для которых логическое поле ProjectManager отмечено как true.У меня возникли проблемы с поиском способа сделать это.

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

Вот мои фрагменты кода, чтобы помочь.

Проект - Модели.py

class Project(models.Model):
client = models.ForeignKey(Clients, related_name='projects')
project_manager = models.ForeignKey(customUser, related_name='Project Manager')
created_by = models.ForeignKey(User, related_name='created_by')
...

Клиенты - models.py

class Clients(models.Model):

   client_name = models.CharField(max_length=255, verbose_name='Client Name', unique=True)
   ...    

class customUser(User):
   company = models.ForeignKey(Clients, related_name="belongs to")
   pm = models.BooleanField(verbose_name='Project Manager')

Проект forms.py

class TimeMaterialsForm(ModelForm):
status = forms.ChoiceField(choices=STATUS_CHOICES)
project_manager = forms.ChoiceField(??)
def __init__(self, *args, **kwargs):
    super(TimeMaterialsForm, self).__init__(*args, **kwargs)
    self.fields['status'].initial = 'T'
    self.fields.keyOrder = ['proj_name', 'client','project_manager','starts_on','desc', 'due_date','completed_on','quote_value','pt_percent','pt_desc','purchase_order','SRED','status', 'notes']
    self.fields['status'].widget=forms.HiddenInput()

...

Спасибо всем!

Стив

1 Ответ

1 голос
/ 21 декабря 2010

Помогает ли это?

class TimeMaterialsForm(ModelForm):
   status = forms.ChoiceField(choices=STATUS_CHOICES)
   project_manager = forms.forms.ModelChoiceField(queryset=customUser.objects.filter(pm=True))
   ...  

http://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield

...