2010-12-21 3 views
0

J'essaye d'avoir un champ de choix qui affiche seulement les utilisateurs avec le champ booléen ProjectManager vérifié comme vrai. J'ai de la difficulté à trouver le moyen de le faire.ChoiceField - choix basé sur le champ booléen

Un peu d'arrière-plan. Lorsqu'un utilisateur est créé, il y a une case à cocher qu'il peut sélectionner s'il s'agit d'un chef de projet ou non. Si elles le vérifient, je veux que le champ de liste déroulante affiche tous les chefs de projet (plus tard, lors de la création d'un nouveau projet).

Voici mes extraits de code pour vous aider.

Projet - Models.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') 
... 

Clients - 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') 

Projet 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() 

... 

Merci à tous!

Steve

+0

utilisez-vous simplement à l'administrateur ou une interface personnalisée? –

+0

J'utilise ma propre interface – TheLifeOfSteve

Répondre

1

Cela aide-t-il?

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

+0

Non, je reçois une erreur de syntaxe: mot-clé ne peut pas être une expression – TheLifeOfSteve

+0

révisé .... J'ai mis accidentellement autour de pm: P – crodjer

+0

se rapproche, je suis maintenant présenté avec cette erreur message. Détecté OperationError lors du rendu: (1054, "Colonne inconnue 'clients_customuser.pm' dans 'Liste des champs'") et pointant vers mon modèle lorsque j'appelle le {{formulaire}}. – TheLifeOfSteve

Questions connexes