2009-11-04 13 views
6

Nel mio modello ho voci di chiavi straniere che mi piacerebbe usare per i miei campi di scelta ... ora non sono così sicuro di come procedere ... il mio file di modello può essere trovato here Fondamentalmente voglio avere un campo di scelta per marca del veicolo, modello, anno, stile del corpo, colore esterno e trasmissione. Dato che tutti funzionano nello stesso modo in cui ho bisogno di qualcuno che mi indichi la direzione giusta, sono pronto.Seleziona il campo ForeignKey nel modulo ChoiceField

class Model(models.Model): 
    model = models.CharField(max_length=15, blank=False) 
    manufacturer = models.ForeignKey(Manufacturer) 
    date_added = models.DateField() 
    def __unicode__(self): 
     name = ''+str(self.manufacturer)+" "+str(self.model) 
     return name 

class BodyStyle(models.Model): 
    doors = models.PositiveSmallIntegerField() 
    passengers = models.PositiveSmallIntegerField() 
    style = models.CharField(max_length=15, blank=False) 
    def __unicode__(self): 
     name = str(self.doors)+" Door/"+str(self.passengers)+" Passenger/"+str(self.style) 
     return name 

risposta

15

Forse stai cercando ModelChoiceField?

Per usarlo, si potrebbe scrivere qualcosa di simile:

class VehicleForm(forms.Form): 
    series = ModelChoiceField(queryset=Series.objects.all()) # Or whatever query you'd like 

poi fare lo stesso per gli altri campi.

Ovviamente, probabilmente si utilizzerà un ModelForm ma questo è solo un esempio. E 'quello che stai cercando?

+0

Penso che questo sia più di ciò che voglio .... fammi provare in un paio di minuti poi vedrò se funziona. –

+0

funziona benissimo :) solo un problema però ... lì lo stile del corpo e il modello del modello non restituiscono solo il nome del modello, ad es. MDX nel mio modello unicode ... dà il modello plus plus, quindi questo è ciò che ottengo nella mia forma ma voglio solo il modello. Lo stesso per lo stile ... vedi la mia modifica sopra per la definizione del modello –

+0

Non sono sicuro di aver capito appieno quello che stai dicendo (sono malato quindi la mia percezione è spenta .. :)) ma penso quello che vuoi usa 'label_from_instance' che ti permette di modificare l'output del campo. Se cerchi Google, dovresti trovare alcuni esempi. – Bartek

Problemi correlati