2009-11-06 6 views
0

J'ai une sorte de situation unique .... Je veux remplir un ModelChoiceField basé sur plusieurs tables, raison pour laquelle je veux que la recherche ne contienne que des enregistrements actifs. Un exemple de l'un des modèles est la suivante:Remplir ModelChoiceField en comparant deux ou plusieurs tables

class ExteriorColour(models.Model): 
    exterior_color = models.CharField(max_length=7, blank=False) 
    def __unicode__(self): 
    return self.exterior_colour 

class Vehicle(models.Model): 
    stock_number = models.CharField(max_length=6, blank=False) 
    exterior_colour = models.ForeignKey(ExteriorColour) 
    def __unicode__(self): 
     return self.stock_number 

A partir du fichier modèle ci-dessus, je veux avoir le champ de formulaire pour la couleur extérieure ayant uniquement les couleurs extérieures qui sont à la fois la table du véhicule et l'extérieur Table de couleur. Comment devrais-je le spécifier?

Répondre

0
ExteriorColour.objects.filter(vehicle__isnull=False) 

Devrait le faire, je pense.

+0

Ahhh ... cela fonctionne bien .... une question rapide ... comment puis-je spécifier que les entrées n'apparaissent qu'une seule fois? Actuellement, si Black apparaît dans trois enregistrements, j'obtiendrai trois entrées. –

+0

Essayez: ExteriorColour.objects.filter (vehicle__isnull = False) .distinct() –

+0

thnx ... cela a fonctionné comme un charme. Était à la recherche de .distinct() –

Questions connexes